1、准备数据:REST表
2、查询数据
3、行转列
方式1:使用 case when then方式
case 条件
when 值1 then 返回值1
when 值2 then 返回值2
..........
else 默认值
end
case when 另一种方式:
case when 条件 = 值1 then 返回值1
case when 条件 = 值1 then 返回值1
else 默认值
end
结果为:
方式2: 使用 decode函数
decode函数: DECODE(条件, 值1, 返回值1, 值2,返回值2, 值3,返回值3, . . . else 缺省值)
含义:if 条件 = 值1 then 返回值1 elsif 条件 = 值2 then 返回值2 else (缺省值) endif
结果和方式1一样
方式3:使用pivot函数
pivot(<聚合函数>(要聚合的列)for <要转换的列> in (要转换的列值 as 要转换成的列名))
结果为:这个结果会发现,如果数据为空没有赋值为0
下面这个方法解决null 转为0 问题
结果和方式1一样:
4、列转行
在上述pivot 方法的原sql语句上再加上unpivot函数,将列再转为行,在unpivot函数中,amount:表示由列转换为行后的数据
month:表示由列转换为行后的列名
结果为:
5、直接使用unpivot函数 --列转行
准备数据:TEST表
查询出的数据
列转行sql
结果为:
总结
到此这篇关于oracle行转列与列转行的几种方式汇总的文章就介绍到这了,更多相关oracle行转列与列转行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!