2017-06-19 85 views
0

我有一個SQL表,如Ref#,EndDate,StepRespone,StepName。數據每天在SQL表中使用excel文件進​​行填充。

現在我想使用現有的SQL表作爲臨時表因爲我想對數據做一些按摩和過濾。

我希望將數據傳輸到另一臺,如果StepName是BureauPull我想給結束日期Login_Date映射,如果StepName是L2我想與Decision_Date圖吧。 Ref#是唯一列,如果記錄在新表中不可用,那麼我想插入數據,如果它是可用的,那麼我想執行上面的檢查。

我試過使用合併,並構建了以下查詢,但它給了我語法錯誤。基於一些檢查插入數據從一個SQL表到另一個

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) 

可能有任何其他的方式來做這個,而不是使用合併,但我不確定它。任何幫助將不勝感激。

感謝

回答

0

這是我第一次在這裏回答,所以我可能會很偏離目標。你嘗試過加入( - 內部加入 - 左加入 - 右加入)。

+0

不,基本上我不認爲連接將在這裏工作(我也許是錯誤的),因爲我從1個SQL表插入到另一個,只有一些列將根據StepName得到更新。如果記錄是新的,並且在新表格中不可用,那麼該行將被插入,因爲它是 –

+0

好吧,我明白了。然後是的,JOIN可能對你沒有多大幫助。 –

相關問題