### `CASE`基本结构
基础形式的`SELECT CASE`语法如下:
sql
SELECT
column_name,
(CASE WHEN condition THEN result1
[WHEN ... THEN ...]
ELSE default_result END) AS aliasname
FROM table_name;
在这个构造里,
- **condition** 是一个布尔表达式,当其为真(TRUE)的时候执行相应的操作。
- **result1**, ..., **resultN** 分别是在对应条件下要选择或计算出的输出结果。
- **default_result** 在所有给定条件都不满足的情况下作为默认返回值。
例如:
sql
SELECT employee_id, name,
(CASE WHEN salary > 50000 THEN 'High'
WHEN salary BETWEEN 30000 AND 50000 THEN 'Medium'
ELSE 'Low' END ) as Salary_Level
FROM employees;
在此例中,我们针对员工表中的salary字段定义了三种等级:如果薪水超过5万则标记为"高", 薪水介于3至5万之间则是“中”,其余情况均为 "低”。
### 多重WHEN子句
通过增加多个WHEN...THEN对来实现更复杂的分段判定:
sql
SELECT department_id, COUNT(*),
(CASE
WHEN department_id = 10 THEN 'HR Department'
WHEN department_id = 20 THEN 'Finance Dept.'
WHEN department_id IN(30,40) THEN 'IT Departments'
ELSE 'Other Depts.'
END) As Department_Description
FROM departments GROUP BY department_id ;
这个例子展示了如何根据不同部门ID给出描述性的分类名称,并统计各部门人数。
总的来说,Oracle SQL 的`SELECT CASE` 结构是一个功能强大且灵活的数据操纵工具,能够适应复杂多变的需求场景,使得从原始数据库记录提炼、转换成符合业务需求的信息变得更加高效便捷。无论是进行简单的状态划分还是复杂的状态组合匹配,都能游刃有余地应对。