代码之家  ›  专栏  ›  技术社区  ›  Hudhaifa Yoosuf

对重复记录的更新查询Oracle

  •  0
  • Hudhaifa Yoosuf  · 技术社区  · 6 年前

    我正在尝试为下面给定的场景编写更新语句。

    card_no是表格的主键,civil number是数据。

    必须使用如下查询更新输出列。

    这是我编写的选择查询,用于按如下方式排列数据。 但我需要提示更新输出列,如下图所示。

    此select语句将只派生重复的值,它可以是2倍或更多,因此根据重复的数目,d字符串应该用civil编号附加到输出中。

    不知道从哪里开始,我们会感谢您的帮助。

    select lc.card_no,lc.civil_no
    来自信用卡
    加入复制卡st2 on lc.civil_no=st2.civil_no
    其中,lc.civil_no不为空
    信用证上的订单。民事编号:
    

    这是我编写的选择查询,用于按如下方式排列数据。

    SELECT LC.CARD_NO,LC.CIVIL_NO
    FROM CARD LC
    JOIN DUPLICATE_CARD ST2 ON LC.CIVIL_NO=ST2.CIVIL_NO
    WHERE  LC.CIVIL_NO IS NOT NULL 
    ORDER BY LC.CIVIL_NO; 
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   Kaushik Nayak    6 年前

    count LPAD

    SELECT card_no
        ,LPAD('D', count(civil_no) OVER (
                PARTITION BY civil_no ORDER BY card_no
                ), 'D') || civil_no as output
    FROM t;
    

    Demo

    MERGE INTO

    UPDATE t t1 
    SET    output = (SELECT output 
                     FROM   (SELECT card_no, 
                                    lpad('D', COUNT(civil_no) 
                                                over ( 
                                                  PARTITION BY civil_no 
                                                  ORDER BY card_no ), 'D') 
                                    || civil_no AS output 
                             FROM   t) t2 
                     WHERE  t1.card_no = t2.card_no);