-1

我需要将一个简单的历史表转换为缓慢变化的维度(示例如下)。最有效的方法是什么?

输入

ID - Update_date
----------
143432 - '2019-02-03'
143432 - '2019-11-01'
143432 - '2020-03-16'

输出

ID - row_actual_date_from - row_actual_date_to
----------
143432 - '2019-02-03' - '2019-10-31'
143432 - '2019-11-01' - '2020-03-15'
143432 - '2020-03-16' - '9999-12-31'
4

1 回答 1

1

我想你可以在LEAD这里使用:

SELECT
    ID,
    Update_date AS row_actual_date_from,
    DATEADD(day, -1, LEAD(Update_date, 1, '9999-12-31')
        OVER (PARTITION BY ID ORDER BY Update_date)) AS row_actual_date_to
FROM yourTable
ORDER BY
    ID,
    Update_date;

下面演示链接的屏幕截图

演示

于 2020-06-15T08:58:14.437 回答