【问题标题】:Inserting data from one SQL Table to another based on some checks根据一些检查将数据从一个 SQL 表插入到另一个表
【发布时间】:2017-06-19 09:13:03
【问题描述】:

我有一个 SQL 表,其中包含 Ref#、EndDate、StepRespone、StepName 等列。每天使用 excel 文件在 SQL 表中填充数据。

现在我想将现有的 SQL 表用作 临时表,因为我想对数据进行一些按摩和过滤。

我想将数据传输到另一个表中,如果 StepName 是 BureauPull 我想将 EnddateLogin_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 之外,可能还有其他方法可以做到这一点,但我不确定。任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: sql excel merge


    【解决方案1】:

    这是我第一次在这里回答,所以我可能非常偏离目标。您是否尝试过 JOIN(- INNER JOIN - LEFT JOIN - RIGHT JOIN)。

    【讨论】:

    • 不,基本上我认为联接在这里不起作用(我可能是错的),因为我从 1 个 SQL 表插入到另一个 SQL 表,并且只有一些列会根据 StepName 得到更新。如果记录是新的,在新表中不可用,则该行将按原样插入
    • 好的,我明白了。那么是的,JOIN 可能对你没有多大帮助。
    猜你喜欢
    • 2020-05-22
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多