温馨提示
详情描述
"Case When" 语句在 SQL 查询中是一种非常有用的功能,它允许用户根据不同的条件执行不同的操作。本文将详细介绍 "Case When" 语句的语法、用法和示例,帮助读者更好地理解和应用这一功能。
一、语法结构
"Case When" 语句的基本语法结构如下:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE else_result
END
```
其中,`condition1`、`condition2` 等为判断条件,`result1`、`result2` 等为满足条件时返回的结果。`ELSE else_result` 为所有条件都不满足时返回的结果。
二、用法介绍
1. 简单用法
"Case When" 语句的最简单用法是只有一个条件和一个结果。例如,假设有一个员工表 `employee`,其中包含字段 `gender` 和 `salary`,我们可以使用 "Case When" 语句来查询性别为男员工的薪水:
```sql
SELECT
gender,
salary,
CASE
WHEN gender = '男' THEN salary
END AS male_salary
FROM
employee;
```
2. 多条件用法
"Case When" 语句可以包含多个条件。例如,我们可以查询薪水高于 5000 的男员工和薪水高于 6000 的女员工的薪水:
```sql
SELECT
gender,
salary,
CASE
WHEN gender = '男' AND salary > 5000 THEN salary
WHEN gender = '女' AND salary > 6000 THEN salary
END AS high_salary
FROM
employee;
```
3. 嵌套用法
"Case When" 语句可以嵌套使用,即在一个条件中再次使用 "Case When" 语句。例如,我们可以查询每个员工的薪水等级,其中薪水高于 8000 的为高级工程师,薪水高于 6000 且低于等于 8000 的为工程师,否则为助理工程师:
```sql
SELECT
gender,
salary,
CASE
WHEN salary > 8000 THEN '高级工程师'
WHEN salary > 6000 THEN '工程师'
ELSE '助理工程师'
END AS salary_level
FROM
employee;
```
三、示例应用
以下是一个完整的示例,展示如何在实际应用中使用 "Case When" 语句:
假设有一个销售记录表 `sales`,包含字段 `product_id`、`quantity` 和 `price`。我们想要查询每个产品的销售总额,并根据销售总额对产品进行排序。
```sql
SELECT
product_id,
SUM(quantity * price) AS total_sales,
CASE
WHEN SUM(quantity * price) > 10000 THEN '热销'
WHEN SUM(quantity * price) > 5000 THEN '畅销'
ELSE '一般'
END AS sales_level
FROM
sales
GROUP BY
product_id
ORDER BY
total_sales DESC;
```
在这个示例中,我们首先使用 `SUM(quantity * price)` 计算每个产品的销售总额,然后使用 "Case When" 语句根据销售总额对产品进行分类。最后,我们按照销售总额降序排序,得到热销、畅销和一般三个等级的产品列表。
总结
"Case When" 语句在 SQL 查询中具有广泛的应用,它可以帮助我们根据不同条件执行不同操作,实现更灵活的数据查询和处理。通过本文的介绍,读者应该对 "Case When" 语句的语法、用法和示例有了更深入的了解,能够在实际工作中更好地应用这一功能。