PIVOT 有趣的关键字

oracle 行转列

语法:

Select * From 表名-- 这个表应该是下面聚合之后的表,而不是原理的行表
PIVOT
(
  SUM('要合并的列1'),MAX('要合并的列2'),.... --操作的列

FOR

 将值转换成列的列名 IN
(列值1,列值2,列值3,列值4....)
)

示例:

with t as (
Select '桃子' name, 300 nums ,1 jidu from dual
Union
Select '苹果' name, 200 nums ,1 jidu from dual
Union
Select '西瓜' name, 100 nums ,1 jidu from dual
Union
Select '桃子' name, 111 nums ,2 jidu from dual
Union
Select '西瓜' name, 222 nums ,2 jidu from dual
Union
Select '苹果' name, 333 nums ,2 jidu from dual
)

--select * from t pivot(sum(nums) for name in ('桃子','西瓜','苹果')) order by jidu; --这样只能全部显示出来,不能达到聚合的目的

select * from (select name, nums from t) pivot (max(nums) for name in ('桃子','西瓜','苹果'));

结果:

 

posted @ 2020-11-04 14:40  姓蜀名黍  阅读(108)  评论(0)    收藏  举报