我正在创建一个显示旧地址的列。每当更新地址时,旧地址将在新地址生效的前一天过期,并且将使用新地址添加具有相同帐号的新行(例如:旧地址将显示: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