在 SQL 中,CASE WHEN
語(yǔ)句主要用于條件篩選,而不是數(shù)據(jù)分組。它允許你在查詢結(jié)果中根據(jù)特定條件返回不同的值。
例如,如果你有一個(gè)名為 sales
的表,其中包含 region
和 amount
列,你可以使用 CASE WHEN
語(yǔ)句來(lái)篩選出特定地區(qū)的銷售額:
SELECT region,
SUM(CASE WHEN region = 'North' THEN amount ELSE 0 END) AS North_Sales,
SUM(CASE WHEN region = 'South' THEN amount ELSE 0 END) AS South_Sales
FROM sales
GROUP BY region;
在這個(gè)例子中,我們使用了 CASE WHEN
語(yǔ)句來(lái)為每個(gè)地區(qū)分別計(jì)算銷售額。但是,請(qǐng)注意,我們?cè)?GROUP BY
子句中指定了 region
列,以便按地區(qū)對(duì)結(jié)果進(jìn)行分組。
如果你嘗試在 GROUP BY
子句中使用 CASE WHEN
表達(dá)式,SQL 數(shù)據(jù)庫(kù)可能會(huì)報(bào)錯(cuò),因?yàn)?GROUP BY
要求列名或常量表達(dá)式,而不是動(dòng)態(tài)生成的值。
總之,雖然 CASE WHEN
可以用于篩選數(shù)據(jù),但它不是用于數(shù)據(jù)分組的標(biāo)準(zhǔn)工具。對(duì)于數(shù)據(jù)分組,你應(yīng)該使用 GROUP BY
子句,并結(jié)合聚合函數(shù)(如 SUM()
、COUNT()
等)來(lái)計(jì)算每組的匯總值。