原始表格如下,表格已GroupId按Date升序排列。我想計算當前行和下一行之間的天差GroupId:
| 組 ID | 日期 |
|---|---|
| 1 | 2022-02-20 00:00:00.000 |
| 1 | 2022-02-27 00:00:00.000 |
| 1 | 2022-03-02 00:00:00.000 |
| 2 | 2022-02-03 00:00:00.000 |
| 2 | 2022-02-17 00:00:00.000 |
目標輸出應該是這樣的:
| 組 ID | 日期 | 上一個_日期 | Day_Difference |
|---|---|---|---|
| 1 | 2022-02-20 00:00:00.000 | 空值 | 空值 |
| 1 | 2022-02-27 00:00:00.000 | 2022-02-20 00:00:00.000 | 7 |
| 1 | 2022-03-02 00:00:00.000 | 2022-02-27 00:00:00.000 | 3 |
| 2 | 2022-02-03 00:00:00.000 | 空值 | 空值 |
| 2 | 2022-02-17 00:00:00.000 | 2022-02-03 00:00:00.000 | 14 |
我得到了如下腳本,但它Previous_Date從最后一行獲取并進行計算,但我想將第一行的Previous_Dateand保留Day_Difference為NULL上面的目標表。
有人可以幫忙嗎?
我的腳本是:
SELECT
GroupId,
[Date],
LAG([Date]) OVER (ORDER BY [Date]) AS Previous_Date,
DATEDIFF(DAY, LAG([Date]) OVER (ORDER BY [Date]), [Date]) AS Day_Difference
FROM
TestTable
ORDER BY
GroupId
uj5u.com熱心網友回復:
您可以嘗試PARTITION BY GroupId在OVER子句中使用。PARTITION BY將查詢結果集劃分為磁區。
SELECT
GroupId,
[Date],
lag([Date]) OVER (PARTITION BY GroupId ORDER BY [Date]) as Previous_Date,
DATEDIFF(day, lag([Date]) OVER (PARTITION BY GroupId ORDER BY [Date]), [Date]) AS Day_Difference
FROM TestTable
order by GroupId
sqlfiddle
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/439782.html
