代码之家  ›  专栏  ›  技术社区  ›  unknown

更新列问题tsql

  •  2
  • unknown  · 技术社区  · 7 年前

    Take a look at this

    任务是求和' ukupna bilansna i vanbilansna aktiva '相同' ID\U Grupe '在表A和表B之间的关系之后' 膜生物反应器 '和' GRP\U ID '已创建。

    (mbr和GRP\U ID是客户端ID卡号)

    之后,我们需要更新列' IDV\U REL\U P\U ESR\U金额 '在同一位置加入后' ID\u IDENTN\u NUM '.

    因此,您可以将ID\u IDENTN\u NUM、mbr和GRP\u ID视为相同的ID卡 数字

    如何在三个表之间进行连接,以及UPDATE和SET语句?

    这是我的想法:

    UPDATE B2_INPT_CR_IP_SNPST AS c
    SET IDV_REL_P_ESR_AMT = (SELECT ID_Grupe, SUM(ukupna_bilansna_i_vanbilansna_aktiva)
                             FROM rm_tb_portfolio AS a
                             INNER JOIN B2_INPT_CR_GRP_SNPST AS b ON a.mbr = b.GRP_ID
                             GROUP BY ID_Grupe)
     WHERE c.IP_IDENTN_NUM = a.mbr
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   user9044110 user9044110    7 年前

    尝试以下操作:

    WITH CTE
    AS
    (
        SELECT ID_Grupe,
               sum(ukupna_bilansna_i_vanbilansna_aktiva) AS Total
        FROM rm_tb_portfolio as a
        INNER JOIN B2_INPT_CR_GRP_SNPST as b ON a.mbr = b.GRP_ID
        GROUP BY ID_Grupe
    )
    UPDATE c
    SET c.IDV_REL_P_ESR_AMT  = c2.Total
    FROM B2_INPT_CR_IP_SNPST as c1
    INNER JOIN CTE AS c2 ON c1.ID_Grupe = c2.ID_Grupe;
    

    如果要执行插入,可以使用相同的方法执行:

    WITH CTE
    AS
    (
        ....
    )
    INSERT INTO B2_INPT_CR_IP_SNPST(...)
    SELECT ... FROM CTE;
    

    但是,不能同时使用两者 INSERT UPDATE 在相同的sql语句中。但是,您可以使用 MERGE 在这种情况下,更新现有行或插入新值。