更新列问题tsql

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新列问题tsql相关的知识,希望对你有一定的参考价值。

Take a look at this

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

以上是关于更新列问题tsql的主要内容,如果未能解决你的问题,请参考以下文章

TSQL 修剪列/表

TSQL - 如何在插入之前根据不同列中的值检查值?

MVC LINQ中用封装的TSQL通用更新方法

Tsql 将行转置为列,按列分组

TSQL PIVOT/UNPIVOT 多个汇总列

TSQL - 将 Sales_Rep 行分组到列并将 DESCRIP 列显示为行 无聚合