前一筆與下一筆的值
如果你想把某欄位的值往上或往下位移 1 列怎麼辦?你可以用與上一個練習完全相同的步驟,但加上兩個新函式:LEAD()(取得下一筆值)與 LAG()(取得前一筆值)。步驟如下:
- 先建立分區
- 接著依特定欄位排序
- 最後依需求使用
LEAD()與/或LAG()函式
本練習屬於課程
SQL Server 中級
練習說明
- 撰寫一個 T-SQL 查詢,對於每個地區:
- 將
OrderDate的值往下位移 1 列。將此欄命名為PreviousOrder。 - 將
OrderDate的值往上位移 1 列。將此欄命名為NextOrder。 「你需要依地區進行 PARTITION BY」
- 將
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
SELECT TerritoryName, OrderDate,
-- Specify the previous OrderDate in the window
___(OrderDate)
-- Over the window, partition by territory & order by order date
___(___ BY ___ ___ BY ___) AS PreviousOrder,
-- Specify the next OrderDate in the window
___(OrderDate)
-- Create the partitions and arrange the rows
___ AS NextOrder
FROM Orders