2015-04-02 42 views
0

我想写的东西是这样的:有没有可能在CASE语句中使用更多的WHEN列?

case column_01 
    when column_01 = 5 AND column_02 = 'NO' 
    then value 
    else value_other 
end 

是它在某种程度上可能吗?

+0

您在这里混合两种不同情况的版本。 – jarlh 2015-04-02 08:59:51

+0

你可以在这里找到一些额外的信息http://www.oracle-developer.net/display.php?id=206 – michaos 2015-04-02 09:18:43

回答

2

您已经混合了两种不同的语法对于CASE表达式。

你会做得一样:

CASE 
WHEN column_01 = 5 AND column_02 = 'NO' THEN 
    value 
ELSE 
    value_other 

1 simple_case_statement

CASE [ expression ] 

    WHEN condition_1 THEN result_1 
    WHEN condition_2 THEN result_2 
    ... 
    WHEN condition_n THEN result_n 

    ELSE result 

    END 

2. searched_case_statement

CASE 

    WHEN expression condition_1 THEN result_1 
    WHEN expression condition_2 THEN result_2 
    ... 
    WHEN expression condition_n THEN result_n 

    ELSE result 

END 
+0

哦,我明白了! 非常感谢! :)) – Yte 2015-04-02 09:30:25

+0

不客气! – 2015-04-02 09:34:33

+0

或者:when(column_01,column_02)=((5,'NO'))then ...' – 2015-09-07 11:37:12

0

不可以。您必须为每列写一个case语句。

1

随着case语句,你要么检查一列/变量的值,做你检查针对:

case column_01 
    when 1 then 'a' 
    when 2 then 'b' 
    ... 
    else 'zzz' 
end 

或您检查每个条件时,子句:

case when column_01 = 5 and column_02 = 'NO' then value 
    when column_01 = 10 and column_03 = 'FRED' then 123 
    else value_other 
end 

你不能把这两种形式结合起来,这样做也没有意义。