任务是总结' 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
答案 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语句中同时使用INSERT
和UPDATE
。但是,在这种情况下,您可以使用MERGE
来更新现有行或插入新值。