我必须使用动态SQL创建一个过程并生成更新语句。
我有桌子
Col.TMap.T_Mp
ID M_Type ID_F SF1 SF2
1 Acc ACC_ID AC_ID NULL
1 STA STA_ID ST_ID NULL
1 CHa Cha_ID CH_ID NULL
ACC
ID AC_ID SV1 SV2 SO1 SO2
1 12 6 NULL = NULL
STA
ID STA_ID SV1 SV2 SO1 SO2
1 1 Open NULL = NULL
1 2 CLosed NULL = NULL
CHA
ID CHa_ID SV1 SV2 SO1 SO2
1 1 PH NULL = NULL
1 2 EM NULL = NULL
我需要使用上表中的ACC_ID,STA_ID和CHA_ID更新Ms.AT.AT_CRAW_Dmtemp表:
输出应该是:
UPDATE mt
SET ACC_ID = ac.ACC_ID
FROM Ms.AT.AT_CRAW t
INNER JOIN Acc ac ON t.AC_ID=SV1
AND ac.ID = 1
INNER JOIN Ms.AT.AT_CRAW_Dmtemp mt
ON mt.[SRID] = t.[RID]
UPDATE mt
SET STA_ID = ac.STA_ID
FROM Ms.AT.AT_CRAW t
INNER JOIN STA ac ON t.ST_ID=SV1
AND ac.ID = 1
INNER JOIN Ms.AT.AT_CRAW_Dmtemp mt
ON mt.[SRID] = t.[RID]
UPDATE mt
SET CHa_ID = ac.CHa_ID
FROM Ms.AT.AT_CRAW t
INNER JOIN CHa ac ON t.CH_ID=SV1
AND ac.ID = 1
INNER JOIN Ms.AT.AT_CRAW_Dmtemp mt
ON mt.[SRID] = t.[RID]
那么有人可以建议我如何做到这一点吗?
答案 0 :(得分:2)
select
'UPDATE mt
SET ' + ID_F + ' = ac.' + ID_F + '
FROM Ms.AT.AT_CRAW t
INNER JOIN ' + M_Type + ' ac ON t.' + SF1 + '=SV1
AND ac.ID = 1
INNER JOIN Ms.AT.AT_CRAW_Dmtemp mt
ON mt.[SRID] = t.[RID]' as SQL
from Col.TMap.T_Mp