zoukankan      html  css  js  c++  java
  • merge实现拉链表

    建表如下( 历史拉链表):

    新表(每日更新的):

    实现语句:

    MERGE INTO test_target t1
    USING (
        SELECT nvl(c.id, b.id) AS id
            ,CASE 
                WHEN c.endtime = to_date('9999-12-30', 'yyyy-mm-dd')
                    AND b.id IS NULL
                    THEN c.STATUS
                WHEN c.id IS NULL
                    THEN b.STATUS
                END AS STATUS
            ,CASE 
                WHEN c.endtime = to_date('9999-12-30', 'yyyy-mm-dd')
                    AND b.id IS NULL
                    THEN c.begain
                WHEN c.id IS NULL
                    THEN to_date('2017-03-15', 'yyyy-mm-dd')
                END AS begain
            ,CASE 
                WHEN c.endtime = to_date('9999-12-30', 'yyyy-mm-dd')
                    AND b.id IS NULL
                    THEN to_date('2017-03-15', 'yyyy-mm-dd')
                WHEN c.id IS NULL
                    THEN to_date('9999-12-30', 'yyyy-mm-dd')
                END AS endtime
        FROM test_b b
        FULL JOIN test_target c ON b.id = c.id
            AND b.STATUS = c.STATUS
        WHERE c.id IS NULL
            OR (
                c.endtime = to_date('9999-12-30', 'yyyy-mm-dd')
                AND b.id IS NULL
                )
        ) t2
        ON (
                t1.id = t2.id
                AND t1.STATUS = t2.STATUS
                )
    WHEN MATCHED
        THEN
            UPDATE
            SET t1.endtime = t2.endtime
            WHERE t1.endtime = to_date('9999-12-30', 'yyyy-mm-dd')
    WHEN NOT MATCHED
        THEN
            INSERT
            VALUES (
                t2.id
                ,t2.STATUS
                ,t2.begain
                ,t2.endtime
                );

     结果如下:

  • 相关阅读:
    vue 添加对象的新属性的方法
    vue 简单的c3属性写法
    大数据分析技术生态圈一览
    网络
    Axis2 WebService客户端Axis2调用
    前端资源
    不错的数据库
    dubbo
    大数据相关
    This is very likely to create a memory leak 异常
  • 原文地址:https://www.cnblogs.com/tester-hehehe/p/6553380.html
Copyright © 2011-2022 走看看