我想寫一個sql查詢來獲取下一行的列作爲一行的列。測試例如下: 表:sql查詢得到下一行的列爲一行的列
ID startno
1 1
2 5
3 9
我想要得到的SQL查詢來獲取結果如下:
ID startno endno
1 1 5
2 5 9
3 9 null
我想寫一個sql查詢來獲取下一行的列作爲一行的列。測試例如下: 表:sql查詢得到下一行的列爲一行的列
ID startno
1 1
2 5
3 9
我想要得到的SQL查詢來獲取結果如下:
ID startno endno
1 1 5
2 5 9
3 9 null
你可以這樣來做:
WITH CTE AS
(SELECT *,ROW_NUMBER()OVER(ORDER BY ID) AS RN
FROM TableName)
SELECT T1.ID,T1.startno,T2.startno as endno
FROM CTE T1 LEFT JOIN
CTE T2 ON T1.RN=(T2.RN-1)
您也可以使用ON T1.ID=(T2.ID-1)
。但是,如果ID
字段不是連續的或者缺少任何ID
,Join會無法正常工作。這就是爲什麼我使用ROW_NUMBER
獲得連續的數字加入表格。
結果:
ID startno endno
1 1 5
2 5 9
3 9 (null)
樣品結果SQL Fiddle
SELECT id, StartNo,
(SELECT TOP(1) StartNo
FROM Table1 t2 WHERE t2.id > t1.id ORDER BY t2.id) EndNo
FROM Table1 t1
您使用的SQL Server版本? – ughai