在oracle中使用CASE时,单个WHEN子句中有多个列

时间:2016-10-24 11:49:06

标签: oracle case

在oracle中使用WHEN时,我们可以在单个CASE子句中使用多个列吗?

3 个答案:

答案 0 :(得分:2)

CASE表达式可以在 logic 中使用多个列,例如

CASE WHEN col1 > val1 AND col2 > val2 THEN 1 ELSE 0 END

但是CASE表达式必须返回单个标量值。

答案 1 :(得分:0)

不,你不能,但你可以像这样使用multi when子句:

select
case when .... end col_a,
case when .... end col_b
from
xxxx

答案 2 :(得分:0)

当然可以。例如:

select ...
from   emp
where case when bonus is null then salary else salary + bonus end > 4000

此处emp是一个表格,bonussalary是该表格中的两列。可以更简单地表达相同的WHERE子句,但无论重构如何,它都将引用两列。 (并且会在某处出现某种情况 - NVL和COALESCE是具有不同语法的CASE表达式。)