嵌套 CASE 可实现多层条件判断,如根据不同地区和金额分类销售等级,但建议优先使用扁平化 WHEN 条件提升可读性与维护性。

在 SQL 的 SELECT 语句中,嵌套 CASE 是指在一个 CASE 表达式内部再使用另一个 CASE 表达式。这种写法适用于需要根据多层条件进行判断的场景。虽然可以嵌套,但要注意可读性和逻辑清晰。
你可以将一个完整的 CASE 表达式作为另一个 CASE 的 THEN 或 ELSE 部分。语法如下:
CASE
WHEN 条件1 THEN
CASE
WHEN 子条件1 THEN 结果1
ELSE 结果2
END
WHEN 条件2 THEN 结果3
ELSE 结果4
END
例如,假设我们有一个销售表 sales,包含 region(地区)、category(类别)和 amount(金额)。你想根据不同地区和产品类别的组合来分类销售等级:
SELECT
region,
category,
amount,
CASE
WHEN region = 'North' THEN
CASE
WHEN amount > 1000 THEN 'High'
WHEN amount > 500 THEN 'Medium'
ELSE 'Low'
END
WHEN region = 'South' THEN
CASE
WHEN amount > 800 THEN 'High'
ELSE 'Low'
END
ELSE 'Not Rated'
END AS sales_level
FROM sales;
很多时候,嵌套 CASE 可以被展开为更扁平的结构,提升可读性。比如上面的例子也可以改写为:
CASE
WHEN region = 'North' AND amount > 1000 THEN 'High'
WHEN region = 'North' AND amount > 500 THEN 'Medium'
WHEN region = 'South' AND amount > 800 THEN 'High'
WHEN region IN ('North', 'South') THEN 'Low'
ELSE 'Not Rated'
END AS sales_level
这种方式避免了深层嵌套,逻辑更线性,便于维护。
以上就是SQL SELECT 中如何处理嵌套 CASE?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号