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

时间:2014-12-18 01:24:06

标签: sql excel select odbc distinct

根据下表,我如何只选择具有独特动物的行?

animal   age    location
-------------------------
zebra    4      africa        -->  return this row
owl      50     america       -->  return this row
owl      50     u.s.a
panda    9      china         -->  return this row

我的理解是,由于location具有唯一的行,以下内容无效:

SELECT DISTINCT animal, age, location FROM table

2 个答案:

答案 0 :(得分:2)

简短回答 - 这是不可能的,因为条件并不严格,你如何确定哪一行为#ow; owl"应该退回吗?

答案很长,只要添加一些条件,就可以选择与您的问题相近的内容,例如:

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

在此查询中,我们选择了独特的动物以及年龄和位置的最小值,请注意 - 它并不意味着会出现具有此类值的行,例如:

animal1, 2, location1
animal1, 1, location2

此查询将选择:

animal1, 1, location1

答案 1 :(得分:1)

简短回答 - 可以使用子查询到分区表。我发现最好在MS SQL中创建一个定义分区查询的 View ,然后在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子句重新整形为视图,则可以更改唯一退货的递送顺序。

如果不通过简单的演示帮助我使用PARTITION表子查询this thread,我就会失职。