更新列问题tsql

时间:2017-12-27 11:32:18

标签: sql-server tsql join sql-update

Take a look at this

任务是总结' ukupna bilansna i vanbilansna aktiva '对于相同的' ID_Grupe '在TABLE_A和TABLE_B之间的关系之后' mbr '和' GRP_ID '已经完成了。

(mbr和GRP_ID是客户ID卡号)

之后,我们需要在列<&strong> IDV_REL_P_ESR_AMT &#39;中更新TABLE_C中的求和值。加入相同的&#39; ID_IDENTN_NUM &#39;。

  

因此,您可以将ID_IDENTN_NUM,mbr和GRP_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 个答案:

答案 0 :(得分:4)

试试这个:

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;

但是,您不能在同一个sql语句中同时使用INSERTUPDATE。但是,在这种情况下,您可以使用MERGE来更新现有行或插入新值。