是否可以在WHEN更多列的CASE语句中使用?

时间:2015-04-02 08:55:57

标签: sql oracle case

我正在尝试写这样的东西:

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

有可能吗?

3 个答案:

答案 0 :(得分: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 

答案 1 :(得分:1)

使用case语句,您可以检查一个列/变量的值,并对其进行检查:

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

或者您检查每个when子句中的条件:

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

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

答案 2 :(得分:0)

没有。您必须为每列编写一个case语句。