0

我正在尝试为我的客户表中的历史记录设置类型 2 的 SCD。附件是如何在预期结果旁边设置客户表。请注意,实际上客户表有 200 万个不同的客户 ID。我尝试使用下面的查询,但 Start_Date 和 End_Date 对每一行都重复。

 SELECT t.Customer_ID, t.Lifecyle_ID, t.Date As Start_Date,
 LEAD(t.Date) OVER (ORDER BY t.Date) AS End_Date
 FROM Customer AS t
4

1 回答 1

0

我认为可能需要一个三步查询。

  1. 使用按客户分区并按日期排序的 LEAD 和 LAG 查看下一行的日期和生命周期值。
  2. 当当前行的生命周期 <> 下一行的生命周期时,使用 CASE 语句为结束日期发出一个值(否则发出 NULL)。现在对生效日期使用 LAG 执行相同的操作。
  3. 对步骤 #2 的输出进行分组或区分。

希望这是有道理的。我将在今天晚些时候尝试发布一个代码示例,但希望这足以让您入门。

于 2022-02-05T17:51:49.803 回答