sql:拉链表改版为每月明细数据

2021-04-29  本文已影响0人  徐胥

拉链表指的是,把一个事物在历史上的所有有效状态,在一个表中用最少行表述清楚。通常包含事物X、有效开始时间、有效结束时间、状态更新时间。

这样的表通常都在DW逻辑处理层。

当我们需要产出报表层的时候,我们通常就需要把这种大信息量的表,读取成更易读的形式,比如我们转化成每月一版的数据,以更便捷地支持各种业务需求。

企业常用方案,是利用SQL内置循环,对所需月进行逐月写数。具体代码如下:

Declare @i int  --@i是一个负数,用于标定更新的月份数,比如-12,就是需要更新近1年的数据

Declare @Date date --@Date是一个日期变量,用于存放指定日期

While @i < 0  --SQL循环开始

Begin

Set @Date = --利用@i拿到标定更新月份的指定日期

insert into B表

Select  字段a,字段b

From ( -拿到符合指定日期有效的数据并插入

Select * From A表 where StartDate<=@Date and EndDate>@Date 

) a

Set @i=@i+1  --该月数据已更新,循环进入下一个月的写入

End

上一篇下一篇

猜你喜欢

热点阅读