具有多个值的 CASE 语句
Posted
技术标签:
【中文标题】具有多个值的 CASE 语句【英文标题】:CASE Statements with multiple values 【发布时间】:2018-10-19 17:12:27 【问题描述】:您好,我想写一个这样的案例陈述:
CASE
WHEN A in ('AA','AV') and B = 'HH' then 'R'
我收到此错误:
错误 [42803] [IBM][DB2/LINUXX8664] 在 SELECT 子句、HAVING 子句或 ORDER BY 子句中指定的以“B”开头的表达式未在 GROUP BY 子句中指定,或者它在 SELECT 子句中、HAVING 子句或带有列函数且未指定 GROUP BY 子句的 ORDER BY 子句。
但我的选择子句中没有“B”。
【问题讨论】:
请分享你提交的sql 这是一个 9 页的 SQL,我不能分享整个代码。但是当我做 CASE WHEN A = 'AA' and B = 'HH' then 'R' WHEN A = 'AV' and B= 'HH' then 'R' 时,它工作正常。 错误不是来自这个sn-p。你能分享整个查询吗? 是的,你知道。B = 'HH'
.
“我的选择子句中没有“B”是什么意思?就在这里and B = 'HH'
。该错误引用了 CASE 语句中的 B
列。
【参考方案1】:
此 CASE
语句是 SELECT、ORDER BY 或 HAVING 子句的一部分。
对于此错误,结合此代码,您还必须有一个 GROUP BY 子句。您需要包含 B
作为该 group by 子句的一部分。否则,B
代表整个范围的可能值,其中一些可能满足也可能不满足 = 'HH'
条件;代码不明确。
【讨论】:
感谢您帮助我理解错误。我也必须在底部的“分组依据”语句中进行这些我没有做过的更改,我收到了这个错误。【参考方案2】:你需要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
【讨论】:
您的答案是正确的,但对我来说没有帮助。我很感激你试图提供帮助。干杯!以上是关于具有多个值的 CASE 语句的主要内容,如果未能解决你的问题,请参考以下文章
SQL - 使用具有多个 IS NULL、IS NOT NULL 的 CASE 语句