我想将一个表中的值合并到另一个表中。其中一个值是一个条件值,但它看起来像我没有正确得到语法。最初,我使用了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