我有一个SQL Server查询,它连接多个表并从不同的表中检索列。
我需要返回每组的第一个和最后一个记录......
数据
ID Name Number Enabled Date
-----------------------------------------------
1 AAA 1234 true 12/10/2016
1 BBB 2222 true 12/10/2016
1 CCC 3333 true 12/10/2016
1 DDD 4444 true 12/10/2016
2 EEE 3453 true 12/10/2016
2 FFF 4453 true 12/10/2016
2 GGG 5222 true 12/10/2016
2 HHH 6344 true 12/10/2016
3 WWW 3453 true 12/10/2016
3 DDD 6453 true 12/10/2016
3 MMM 7222 true 12/10/2016
3 GGG 8344 true 12/10/2016
它有ORDER BY ID
和数字
答案 0 :(得分:1)
您可以像这样使用ROW_NUMBER
;WITH temp AS
(
SELECT *,
Row_number() over(PARTITION BY ID ORDER BY Number) AS RnAsc,
Row_number() over(PARTITION BY ID ORDER BY Number Desc) AS RnDesc
FROM @SampleData sd
)
SELECT *
FROM temp t
WHERE t.RnAsc = 1 -- first row
OR t.RnDesc = 1 -- last row