我的下表包含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
答案 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)
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上的演示