1. CASE表达式基础解析
在SQL查询中,CASE表达式相当于编程语言中的if-else条件判断结构。它的标准语法包含两种形式:
1.1 简单CASE表达式
sql复制CASE 列名或表达式
WHEN 值1 THEN 结果1
WHEN 值2 THEN 结果2
...
ELSE 默认结果
END
这种形式类似于switch-case结构,适合对单一列或表达式进行等值比较。例如对订单状态进行文字描述转换:
sql复制SELECT
order_id,
CASE status
WHEN 1 THEN '待支付'
WHEN 2 THEN '已发货'
WHEN 3 THEN '已完成'
ELSE '未知状态'
END AS status_desc
FROM orders;
注意:简单CASE表达式只能进行等值比较,如果需要范围判断或复杂条件,应该使用搜索式CASE表达式。
1.2 搜索式CASE表达式
sql复制CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
...
ELSE 默认结果
END
这种形式更加灵活,每个WHEN子句可以包含不同的条件表达式。例如根据订单金额划分等级:
sql复制SELECT
order_id,
amount,
CASE
WHEN amount >= 1000 THEN '大额订单'
WHEN amount >= 500 THEN '中额订单'
WHEN amount > 0 THEN '小额订单'
ELSE '无效订单'
END AS order_level
FROM orders;
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 高级应用场景
2.1 数据透视与行列转换
CASE表达式常用于实现数据透视功能,将行数据转换为列展示。例如统计各部门不同性别员工数量:
sql复制SELECT
department,
COUNT(*) AS total,
SUM(CA
