我有一个SQL表,其中包含 Ref#,EndDate,StepRespone,StepName 等列。使用excel文件每天在SQL表中填充数据。
现在我想将现有的SQL表用作临时表,因为我想对数据进行一些按摩和过滤。
我想将数据传输到另一个表中,如果StepName是BureauPull,我想用 Login_Date 映射 Enddate ,如果 StepName 是L2我想用Decision_Date映射它。 Ref#是唯一的列,如果新表中没有记录,那么我想按原样插入数据,如果可用,那么我想执行上述检查。
我已经尝试使用Merge并构造了以下查询,但它给了我语法错误。
MERGE od_test2 T --tareget
USING OD_TEST S --source
ON (S.ref = T.REF)
WHEN MATCHED
THEN UPDATE
SET T.LOGIN_DATE =
(CASE
WHEN s.stepname IN ('BUREAUPULL') THEN CONVERT(VARCHAR,s.[ENDDATE])
ELSE CONVERT(VARCHAR,s.[LOGIN_DATE])
END S.LOGIN_DATE),
T.Decision_DAte = (CASE
WHEN s.stepname IN ('l2','l3') THEN CONVERT(VARCHAR,s.[ENDDATE])
ELSE CONVERT(VARCHAR,s.[DECISION_DATE])
END S.DECISION_DATE)
WHEN NOT MATCHED
THEN INSERT (Target_Column_Names)
VALUES (Source_Column_Names)
可能有任何其他方式这样做而不是使用Merge但我不确定它。任何帮助都将受到高度赞赏。
由于
答案 0 :(得分:0)
这是我在这里的第一个答案,所以我可能会非常偏离目标。你有没有尝试过JOIN( - INNER JOIN - LEFT JOIN - RIGHT JOIN)。