这是我的问题。我有一个Microsoft SQL服务器数据库表,其中包含一堆列。 (我无法更改此表的数据结构!)
根据输入的'Actual'值,我需要返回相关的'Relative'值。
我已经成功完成了以下case语句所需的部分内容,但case语句最多有10个条件,因此无法覆盖表中的所有21列。解决这个问题的最佳方法是什么?我的目标是将它放入一个select语句,以便我可以选择相对大小并在我的查询中返回它。
我对案例陈述所做的例子:
SELECT
T.AValue
CASE WHEN (T.ActualColumn1 = T.AValue) then T.RelativeColumn1 ELSE
CASE WHEN (T.ActualColumn2 = T.AValue) THEN T.RelativeColumn2 ELSE
CASE WHEN (T.ActualColumn3 = T.AValue) THEN T.RelativeColumn3 ELSE
CASE WHEN (T.ActualColumn4 = T.AValue) THEN T.RelativeColumn4 ELSE
NULL
END
END
END
END AS RValue
FROM T
感谢您的帮助!
答案 0 :(得分:3)
如果您将案例陈述更改为已搜查的案例,则在子句时可以有10个以上。
select T.AValue,
case T.AValue
when T.ActualColumn1 then T.RelativeColumn1
when T.ActualColumn2 then T.RelativeColumn2
when T.ActualColumn3 then T.RelativeColumn3
when T.ActualColumn4 then T.RelativeColumn4
end as RValue
from T