【发布时间】:2018-10-10 14:30:47
【问题描述】:
我将此案例作为更大 SQL 语句的一部分:
.
.
.
CASE
WHEN [AEC].item = 'S' THEN [sOld].code
WHEN [AEC].item= 'R' THEN [rOld].code
END AS [oldCode],
CASE
WHEN [AEC].item= 'S' THEN [sOld].system
WHEN [AEC].item= 'R' THEN [rOld].system
END AS [oldStatusSystem],
CASE
WHEN [AEC].item= 'S' THEN [sNew].code
WHEN [AEC].item= 'R' THEN [rNew].code
END AS [newCode],
CASE
WHEN [AEC].item= 'S' THEN [sNew].system
WHEN [AEC].item= 'R' THEN [rNew].system
END AS [newStatusSystem],
.
.
LEFT JOIN
tblSystemStatuses AS [sOld] ON [AEC].oldValue = [sOld].status
LEFT JOIN
tblSystemStatuses AS [sNew] ON [AEC].newValue = [sNew].status
LEFT JOIN
tblSystemRoles AS [rOld] ON [AEC].oldValue = [rOld].role
LEFT JOIN
tblSystemRoles AS [rNew] ON [AEC].newValue = [rNew].role
我希望这个案子看起来像这样:
CASE
WHEN [AEC].item = 'S'
THEN
[sOld].code AS [oldCode],
[sOld].system AS [oldStatusSystem],
[sNew].code AS [newCode],
[sNew].system AS [newStatusSystem]
ELSE WHEN [AEC].item = 'R'
THEN
[rOld].code AS [oldCode],
[rOld].system AS [oldStatusSystem],
[rNew].code AS [newCode],
[rNew].system AS [newStatusSystem]
END
换句话说,我想在 then 语句中执行一些操作。我在任何地方都找不到这样的例子。
我不能写 if else 因为我需要进行一些连接并依赖来自多个表的数据。有没有办法按照我想要的方式写案例?
【问题讨论】:
-
我不认为这是可能的,因为 case 是一个“返回”某些东西的函数,如果你在 NPP 或 SSMS 上编码,你可以在垂直选择的多行上写相同的内容:按住 alt +shift
-
不。 Case 是一个表达式,它返回一个标量值。
标签: sql-server tsql case