我有一个INSERT INTO查询,并且我有CASE语句来确定许多字段值。但是在下面的所有测试语句都是相同的,有没有办法合并这个?
field1 = CASE WHEN IID <> '\' THEN IID ELSE '' END
field2 = CASE WHEN IID <> '\' THEN Left(IID, (InStrRev(IID, '\') - 1))
ELSE '' END
field3 = CASE WHEN IID <> '\' THEN Right(IID, (Len(IID) - InStrRev(IID, '\')))
答案 0 :(得分:0)
CASE
是一个返回单个值的表达式(不是语句)。除了简化你正在检查的表达式之外,我无法想到在这里完成合并的任何方法。例如,您可以使用子查询或CTE:
;WITH x AS
(
SELECT x = CASE WHEN IID <> '\' THEN 1 ELSE 0 END, other columns
FROM dbo.table
)
INSERT INTO ...
SELECT column1 = CASE x WHEN 1 THEN IID ELSE '' END,
column2 = CASE x WHEN 1 THEN LEFT ...
...etc
FROM x;