更新列问题tsql
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新列问题tsql相关的知识,希望对你有一定的参考价值。
任务是在'mbr'和'GRP_ID'之间的TABLE_A和TABLE_B之间的关系之后,对'ugupna bilansna i vanbilansna aktiva'求同一'ID_Grupe'。
(mbr和GRP_ID是客户ID卡号)
之后,我们需要在加入相同的“ID_IDENTN_NUM”后更新“IDV_REL_P_ESR_AMT”列中TABLE_C中的求和值。
因此,您可以将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
答案
试试这个:
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
来更新现有行或插入新值。
以上是关于更新列问题tsql的主要内容,如果未能解决你的问题,请参考以下文章