在Excel ODBC SQL中select具有不同第一列的行

鉴于下面的表格,我怎样才能只select有独特的动物行?

animal age location ------------------------- zebra 4 africa --> return this row owl 50 america --> return this row owl 50 usa panda 9 china --> return this row 

我的理解是,以下将不会工作,由于location具有独特的行:

 SELECT DISTINCT animal, age, location FROM table 

简短的回答 – 这是不可能的,因为条件不严格,你怎么能确定哪一行“猫头鹰”应该返回?

长的答案,只要你添加一些条件,你可以select一些接近你的问题,如下所示:

 SELECT animal, MIN(age), MIN(location) FROM table GROUP BY animal 

在这个查询中,我们select了独特的动物和年龄和位置的最小值,注意 – 这并不意味着会有这样的值的行,如下所示:

 animal1, 2, location1 animal1, 1, location2 

这个查询将会select:

 animal1, 1, location1 

简短的答案 – 这是可能的子查询分区表。 我发现最好在你的MS SQL中创build一个视图来定义分区查询,然后在你的SELECT语句中调用这个视图。

MS SQL 视图 (例如vw_First_Animals)将是:

 SELECT * FROM ( SELECT *, rn=row_number() OVER (PARTITION BY [animal] ORDER by [location]) FROM [dbo].[tblAnimals] ) x where rn = 1; 

这使得你的XL查询,

 SELECT * FROM vw_First_Animals 

如果将ORDER BY子句重新ORDER BYView中 ,则可以更改唯一退货的递送顺序。

我会不经意地向这个线程点头, 这个线程通过简单的演示帮助了PARTITION表子查询。