今天也要学习呐 2022-04-28 17:45 采纳率: 68.2%
浏览 90
已结题

拉链表,希望能多一条更新数据

问题遇到的现象和发生背景

img


最后一次更新时间是20220101,但我希望多出来一条数据,即20220102那条数据
如图,希望得到表二的效果(新加的一条数据除了时间和期初金额外,其他字段均为0)
麻烦各位给个伪代码,让我知道怎么写就行了

问题相关代码

--建表语句

CREATE TABLE if not EXISTS t_ccc(
    company_key BIGINT ,
    customer_key STRING ,
    action_date STRING ,
    start_date STRING ,
    end_date STRING ,
    amount_initial DECIMAL COMMENT '期初金额',
    amount_last DECIMAL COMMENT '期末金额',
    amount_1 DECIMAL ,
    amount_2 DECIMAL ,
    amount_3 DECIMAL ,
    amount_4 DECIMAL 
);
--我用的方法
INSERT OVERWRITE TABLE t_ccc
SELECT 
        COALESCE(tblA.company_key, tblB.company_key) AS company_key
        , COALESCE(tblA.customer_key, tblB.customer_key) AS customer_key
        , COALESCE(tblA.action_date, tblB.action_date) AS action_date
        , COALESCE(tblA.action_date, '19700101') AS start_date
        , COALESCE(tblB.action_date, '99991231') AS end_date
        , IF(COALESCE(tblA.action_date, tblB.action_date) = '19700101'
            , COALESCE(tblB.amount_initial, tblA.amount_initial)
            , COALESCE(tblA.amount_initial, tblB.amount_initial)
            ) AS amount_initial
        , COALESCE(tblA.amount_last, tblB.amount_last) AS amount_last
        , COALESCE(tblA.amount_1, tblB.amount_1) AS amount_1
        , COALESCE(tblA.amount_2, tblB.amount_2) AS amount_2
        , COALESCE(tblA.amount_3, tblB.amount_3) AS amount_3
        , COALESCE(tblA.amount_4, tblB.amount_4) AS amount_4
    FROM t_tmp_zipper tblA
    LEFT JOIN t_tmp_zipper tblB
    ON tblA.customer_key = tblB.customer_key
        AND tblA.asc_rn + 1 = tblB.asc_rn
-- t_tmp_zipper是我拿数据的表,里面的asc_rn字段是顺序,1,2,3,4,5这样的
  • 写回答

5条回答 默认 最新

  • 普通网友 2022-05-05 22:42
    关注
    insert into 表二
    select start_date ,end_date ,amount_initial,amount_last 
    from 表一
    union
    select end_date , 99991231, tmp.amount_last, 0 
    from 
    (select * from 表一 order by end_date desc limit 1) tmp
    
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月6日
  • 修改了问题 4月29日
  • 修改了问题 4月28日
  • 赞助了问题酬金10元 4月28日
  • 展开全部

悬赏问题

  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO
  • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
  • ¥20 关于 openpyxl 处理excel文件地问题
  • ¥15 MS中不知道高分子的构型怎么构建模型
  • ¥60 QQOP数据,什么是op数据号,怎么提取op数据!能不能大量提取(语言-c语言)
  • ¥15 matlab代码 关于微分方程和嵌套的分段函数。