具有独特的属性

问题描述:

选择行我有如下表具有独特的属性

ind_id  name     value  date 
----------- -------------------- ----------- ---------- 
1   a     10   2010-01-01 
1   a     20   2010-01-02 
1   a     30   2010-01-03 
2   b     40   2010-01-01 
2   b     50   2010-01-02 
2   b     60   2010-01-03 
2   b     70   2010-01-04 
3   c     80   2010-01-01 
3   c     90   2010-01-02 
3   c     100   2010-01-03 
3   c     110   2010-01-04 
3   c     120   2010-01-05 
4   d     130   2010-01-05 

如何选择具有独特ind_id属性行?无论哪个行肯定会为每个ind_id。结果集中需要4行。我使用的是SQL Server 2008的感谢

对于这一点,你要使用的Windows功能:

select ind_id, name, value, date 
from (select t.*, row_number() over (partition by ind_id order by (select NULL)) as seqnum 
     from t 
    ) t 
where seqnum = 1; 

如果你只想要出现一次的操作,然后使用:

select ind_id, name, value, date 
from (select t.*, count(*) over (partition by ind_id) as NumInds 
     from t 
    ) t 
where numInds = 1 
+0

谢谢,第一个是我需要的! –

+0

我希望OP有一些方法来确定他想要的行(最新日期,最大值等)。它可以添加到'ORDER BY'部分,以便返回“正确”的行。 –

+1

@TimofeiDavydik。 。 。不客气。第二个是在那里,因为我最初误解了这个问题,所以我把它留下了。 –