Mettre à jour le problème de colonne tsql

Regarde ça

La tâche consiste à additionner ' ukupna bilansna i vanbilansna aktiva ' pour le même ' ID_Grupe ' après la relation entre TABLE_A et TABLE_B sur ' mbr ' et ' GRP_ID '.

(mbr et GRP_ID sont les numéros de carte d'identité des clients)

Ensuite, nous devons mettre à jour les valeurs additionnées dans TABLE_C dans la colonne ' IDV_REL_P_ESR_AMT ' après avoir rejoint le même ' ID_IDENTN_NUM '.

Vous pouvez donc considérer ID_IDENTN_NUM, mbr et GRP_ID comme le même numéro de carte d'identité.

Comment puis-je faire des jointures entre trois tables, avec des instructions UPDATE et SET?

C'est mon idée:

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 

Essaye ça:

 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; 

Si vous voulez insert, vous pouvez le faire de la même manière:

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

Mais, vous ne pouvez pas utiliser à la fois INSERT et UPDATE dans la même instruction sql. Toutefois, vous pouvez utiliser MERGE dans ce cas, pour mettre à jour des lignes existantes ou insert de nouvelles valeurs.