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 分支语句与行转列/