我正在創建一個顯示舊地址的列。每當更新地址時,舊地址將在新地址生效的前一天過期,并且將使用新地址添加具有相同帳號的新行(例如:舊地址將顯示:From:10/01 /2020 至:12/31/2021 和新地址從:01/01/2022 至:12-31-9999)。我試圖在 SQL 中并排顯示每個帳號的舊地址和新地址,但我得到了零。
樣本資料
| 賬號 | 地址 | 有效自 | 有效 |
|---|---|---|---|
| 4895626 | 720主 | 2020 年 10 月 1 日 | 2021 年 12 月 31 日 |
| 9794651 | 158 第四街 | 2002 年 9 月 29 日 | 2020 年 12 月 19 日 |
| 4895626 | 第九大道 5986 號 | 2022 年 1 月 1 日 | 9999 年 12 月 31 日 |
期望的結果
| 賬號 | 地址 | 有效自 | 有效 | 以前的地址 |
|---|---|---|---|---|
| 4895626 | 720主 | 2020 年 10 月 1 日 | 2021 年 12 月 31 日 | 0 |
| 9794651 | 158 第四街 | 2002 年 9 月 29 日 | 2020 年 12 月 19 日 | 0 |
| 4895626 | 第九大道 5986 號 | 2022 年 1 月 1 日 | 9999 年 12 月 31 日 | 720主 |
DECLARE @PreviousValidTo DATE;
SELECT @PreviousValidTo = DATEADD(DAY, -1, Z.ValidFrom)
FROM Address.NewAddress Z
SELECT Address, ValidFrom, ValidTo
CASE
WHEN @PreviousValidTo = C.ValidFrom
THEN C.Address
ELSE 0
END AS PreviousAddress
FROM Address.NewAddress C
uj5u.com熱心網友回復:
可能你可以使用 lag
select *,
Lag(address,1,'0') over(partition by accountnumber order by validto) PreviousAddress
from address.NewAddress
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/410544.html
標籤:
上一篇:SQLServer中的磁區行專案
