查找每个Id SQL查询的第一条记录

时间:2013-02-25 08:35:10

标签: sql sql-server sql-server-2005

我的下表包含ID和Number列

ID Number 
1 34534 
1 45345 
1 45353 
2 56454 
2 45645 
3 65756 
3 67565 
3 87865 
3 38932 
4 36468 
4 45332 

预期输出

1 34534 
2 56454 
3 65756 
4 36468 

我需要为每个Id获取所有第一个数字。

如何编写查询来实现此目的?我不是SQL的专家。 :(

注意:使用SQL Server 2005

2 个答案:

答案 0 :(得分:6)

尝试这样的事情:

SELECT ID, Number FROM
    (SELECT ID, Number, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Number) RN FROM MyTable) Base
    WHERE Base.RN = 1

显然MyTable是您表格的名称

啊......显然2 56454是不可能的。您只能获得2 45645。除非使用ORDER BY子句,否则sql表中的顺序是一种错觉。否则,SQL服务器可以重新排序它想要的行。

答案 1 :(得分:0)

CROSS APPLY

的另一个选项
SELECT *
FROM dbo.test12 t1 CROSS APPLY (
                                SELECT TOP 1 Number
                                FROM dbo.test12 t2
                                WHERE t1.ID = t2.ID
                                ) o
WHERE t1.Number = o.Number   

SQLFiddle上的演示