我正在编写一个案例语句,我需要在其中检查列并分配一个值。但是,如果一行符合多个案例怎么办?例如在下表中,我想在 COLA 和/或 COLB 为 null 时分配一个桶;所以在第一种情况下两者都是 NULL ,那么当 COLA 和 COLB 为空时,我将如何告诉 SQL case 语句分配“两者都是 NULL ”。当 COLA 或 COLB 为 null 时,我可以轻松分配。在我的工作中,我正在检查 8 列,所以我需要找到每个组合和正确的案例?必须有一个简单的方法。
**RowNumber COLA COLB Case**
1 Null Null **Both are NULL**
2 Null B A is null
3 A Null B is null
4 AA BB NULL
5 CC Null B is null
最佳答案
鉴于您有 8 列,您可能需要执行以下操作:
WITH t AS (
SELECT
CASE WHEN (colA IS NULL AND colB IS NULL AND colC IS NULL AND colD IS NULL AND
colE IS NULL AND colF IS NULL AND colG IS NULL AND colH IS NULL) THEN 'ALL' ELSE '' END [ALL],
CASE WHEN colA IS NULL THEN 'A' ELSE '' END [A],
CASE WHEN colB IS NULL THEN 'B' ELSE '' END [B],
CASE WHEN colC IS NULL THEN 'C' ELSE '' END [C],
CASE WHEN colD IS NULL THEN 'D' ELSE '' END [D],
CASE WHEN colE IS NULL THEN 'E' ELSE '' END [E],
CASE WHEN colF IS NULL THEN 'F' ELSE '' END [F],
CASE WHEN colG IS NULL THEN 'G' ELSE '' END [G],
CASE WHEN colH IS NULL THEN 'H' ELSE '' END [H]
FROM
<TABLENAME>)
SELECT
CASE WHEN [ALL] = 'ALL' THEN 'ALL are NULL'
ELSE [ALL] + ',' + A + ',' + B + ',' + C + ',' + D + ','
+ E + ',' + F + ',' + G + ',' + H + ' are NULL'
END
FROM T
在最后的 select 语句中,您可以根据需要进行进一步的更改以显示结果。
关于mysql - SQL case 语句 - 多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18128331/