SQL 分支语句与行转列
SQL 分支语句与行转列学习笔记
在 SQL 中,分支语句用于根据条件执行不同的逻辑,而行转列是一种将行数据转换为列数据的操作。
1. 分支语句
分支语句用于根据条件执行不同的逻辑。SQL 提供了两种常用的分支语句:DECODE 和 CASE WHEN。
(1)DECODE 函数
DECODE 是 Oracle 提供的一种简单的条件判断函数。
语法:
1 | |
示例:
1 | |
注意:
DECODE函数只能用于简单的等值判断。- 如果所有条件都不满足,则返回默认值(
default_result)。
(2)CASE WHEN 语句
CASE WHEN 是一种更灵活的分支语句,支持复杂的条件判断。
语法:
1 | |
示例:
1 | |
注意:
CASE WHEN支持复杂的条件判断,比DECODE更灵活。ELSE子句是可选的,如果没有ELSE,则默认返回NULL。
2. 行转列
行转列是一种将行数据转换为列数据的操作,常用于生成报表或汇总数据。

(1)使用 DECODE 实现行转列
1 | |
(2)使用 CASE WHEN 实现行转列
1 | |
(3)使用 PIVOT 实现行转列(Oracle 11g 及以上版本)
1 | |
注意:
PIVOT是 Oracle 11g 引入的功能,语法更简洁。PIVOT只能用于聚合函数(如MAX、MIN、SUM等)。
3. 综合示例
以下是一些综合示例,展示了分支语句和行转列的实际应用。
(1)按部门编号涨工资
1 | |
(2)行转列生成学生成绩表
1 | |
总结
- 分支语句:
DECODE和CASE WHEN的使用方法及区别。 - 行转列:使用
DECODE、CASE WHEN和PIVOT实现行转列操作。
SQL 分支语句与行转列
https://blog.pangcy.cn/2018/09/07/数据库相关/Oracle/SQL 语法/SQL 分支语句与行转列/