我想將一個表中的值合併到另一個表中。其中一個值是一個條件值,但它看起來像我沒有正確得到語法。最初,我使用了IF-THEN-ELSE語句,但建議使用CASE語句。帶條件語句的SQL INSERT IF then then
這裏的要點是失敗的語法:如果我不落實的情況
CREATE PROCEDURE EmployeeMerge
AS
BEGIN
SET NOCOUNT ON;
MERGE INTO Employee AS t1
USING
(SELECT
EmployeeName,
Zip,
UpdateDate
FROM table2) AS t2
ON (t1.EmployeeID = t2.EmployeeID)
WHEN MATCHED AND t2.UpdatedDate > t1.UpdatedDate THEN
UPDATE
SET
t1.EmployeeName = s.EmployeeName,
t1.Zip =
(CASE
WHEN t2.ZipExt IS NULL OR t2.ZipExt = '' THEN t2.Zip
ELSE (t2.Zip + '-' + t2.ZipExt)
END),
t1.UpdatedDate = t2.UpdateDate
WHEN NOT MATCHED THEN
INSERT (EmployeeName,
Zip,
ModDate)
VALUES
(t2.Name,
(CASE
WHEN t2.ZipExt IS NULL OR t2.ZipExt = '' THEN t2.Zip
ELSE (t2.Zip + '-' + t2.Zip_Ext)
END),
t2.UpdatedDate)
OUTPUT
deleted.*,
$action,
inserted.*
END; **-- A MERGE statement must be terminated by a semi-colon (;)**
GO
這MERGE語句工作得很好,即簡單地設置t1.Zip = t2.Zip,但當然,這是避免t2.ZipExt字段。
您必須使用大小寫切換[看到這篇文章](http://stackoverflow.com/questions/15820405/sql-insert-into-table-with-select-case-values) – Max 2014-09-19 17:22:19
擺脫如果和使用一個案例。發佈完整的SQL,如果你想要更多的細節:) – UnhandledExcepSean 2014-09-19 17:22:45
@Max,我已經更新了我的SQL語句,請參考,謝謝! – user118190 2014-09-19 17:45:48