0
非常困惑,SQL Server 2012確定MERGE
子查詢的語法問題。但是,當我單獨運行子查詢時,它沒有任何問題。不正確的語法合併連接
一直盯着這一段時間,需要一些新鮮的眼睛。
消息102,級別15,狀態1,行14
附近有語法錯誤 'CM'。
消息102,級別15,狀態1,行25
附近有語法錯誤 'CS'。
USE [UDARepDBArchive]
INSERT INTO ZZZ_SCD
SELECT [Id]
,[ZZZ]
,[MMMMM]
,[VVVVVVV]
,Eff_Date
,End_Date = CONVERT(DATETIME2,END_DATE)
,Current_Flag
FROM
(MERGE ZZZ_SCD CM
USING (SELECT [ID] = GA.ACCOUNTID
,ZZZ = CASE
WHEN isnull(g.MMMMM,'0') = '0' OR ISNULL(g.VVVVVVV,'0') = '0'
THEN '0'
ELSE g.MMMMM /g.VVVVVVV
END
,MMMMM = G.MMMMM
,VVVVVVV = G.VVVVVVV
FROM UDAReporting.rbd.STRGroup G
LEFT OUTER JOIN UDAReporting.rbd.STRGroupAccount GA ON GA.GROUPID = G.GROUPID
) CS ON CM.ID = CS.ID
WHEN NOT MATCHED THEN
INSERT VALUES (cs.[Id]
,cs.[ZZZ]
,cs.[MMMMM]
,cs.[VVVVVVV]
,CONVERT(DATETIME2,GETDATE())
,'2199-10-01 00:00:00.000'
,'Y')
WHEN MATCHED AND CM.Current_Flag = 'Y' AND (CM.ZZZ <> CS.ZZZ) THEN
UPDATE SET CM.Current_Flag = 'N', CM.End_date = CONVERT(DATETIME2,GETDATE())
OUTPUT $Action Action_Out, cs.[Id]
,cs.[ZZZ]
,cs.[MMMMM]
,cs.[VVVVVVV]
,CONVERT(DATETIME2,GETDATE()) AS Eff_date
,'2199-10-01 00:00:00.000' End_Date
,'Y' Current_Flag
) AS MERGE_OUT
WHERE MERGE_OUT.Action_Out = 'UPDATE'
你可以用」把'MERGE'放在子查詢中。我的意思是,你*可以*。它只會產生一個錯誤,與'INSERT','UPDATE'或'DELETE'相同。 –