如何根据复合键在表格中找到不同的记录?

时间:2017-05-09 18:21:44

标签: sql

我在sql server 2012中有一个表格如下:

a   b   c   1   8   3
a   b   c   2   4   6
d   e   f   1   3   4
h   i   j   2   5   7
h   i   j   1   9   8
h   i   j   4   8   0
h   i   j   4   6   8
c   v   n   1   2   3

我希望结果基于前三列的不同值,而其余的列可以是任意单个记录,如相应的三列:

a   b   c   1   8   3
d   e   f   1   3   4
h   i   j   2   5   7
c   v   n   1   2   3

1 个答案:

答案 0 :(得分:0)

在大多数数据库中,您可以使用ANSI标准row_number()函数执行此操作:

select col1, col2, col3, col4, col5, col6
from (select t.*,
             row_number() over (partition by col1, col2, col3 order by col1) as seqnum
      from t
     ) t
where seqnum = 1;