美文网首页
sql:拉链表改版为每月明细数据

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

作者: 徐胥 | 来源:发表于2021-04-29 17:25 被阅读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

    相关文章

      网友评论

          本文标题:sql:拉链表改版为每月明细数据

          本文链接:https://www.haomeiwen.com/subject/qxmwrltx.html