具有多个值的 CASE 语句

CASE Statements with multiple values

你好,我想写这样的 CASE STATEMENT:

CASE
WHEN A in ('AA','AV') and B = 'HH' then 'R'

我收到这个错误:

ERROR [42803] [IBM][DB2/LINUXX8664] An expression starting with "B" specified in a SELECT clause, HAVING clause, or ORDER BY clause is not specified in the GROUP BY clause or it is in a SELECT clause, HAVING clause, or ORDER BY clause with a column function and no GROUP BY clause is specified.

但我的 select 子句中没有 "B"。

CASE 语句是 SELECT、ORDER BY 或 HAVING 子句的一部分。

对于这个错误,结合这段代码,你还必须有一个GROUP BY子句。您需要将 B 作为该 group by 子句的一部分。否则,B 表示可能值的整个范围,其中一些可能满足也可能不满足 = 'HH' 条件;代码不明确。

您需要 END 然后值

select CASE
WHEN A in ('AA','AV') and B = 'HH' then 'R' end

CASE 的一般语法

CASE expression
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
   ...
    WHEN conditionN THEN resultN
    ELSE result
END