T-SQL按最早的日期和唯一类别选择行

dre*_*rew 1 t-sql sql-server greatest-n-per-group

我正在使用Microsoft SQL.我有一个表,其中包含由两个不同类别和日期存储的信息.例如:

ID   Cat1   Cat2   Date/Time   Data  
1    1      A      11:00       456
2    1      B      11:01       789
3    1      A      11:01       123
4    2      A      11:05       987
5    2      B      11:06       654
6    1      A      11:06       321
Run Code Online (Sandbox Code Playgroud)

我想为Cat1和Cat2的每个独特组合提取一行,我需要具有最早日期的行.在上面我想要ID = 1,2,4和5.

谢谢

Qua*_*noi 5

看一下row_number()MSDN.

SELECT  *
FROM    (
        SELECT  *,
                ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY date_time, id) rn
        FROM    mytable
        ) q
WHERE   rn = 1
Run Code Online (Sandbox Code Playgroud)

(在SQL Fiddle上运行代码)