【发布时间】:2017-06-19 09:13:03
【问题描述】:
我有一个 SQL 表,其中包含 Ref#、EndDate、StepRespone、StepName 等列。每天使用 excel 文件在 SQL 表中填充数据。
现在我想将现有的 SQL 表用作 临时表,因为我想对数据进行一些按摩和过滤。
我想将数据传输到另一个表中,如果 StepName 是 BureauPull 我想将 Enddate 与 Login_Date 映射,如果 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 之外,可能还有其他方法可以做到这一点,但我不确定。任何帮助将不胜感激。
谢谢
【问题讨论】: