Oracle pivot & unpivot
admin
2023-04-27 08:03:37
0

pivot & unpivot 11g新特性

1     pivot

-对的形式出现,典型的行转列报表函数

create table test_demo(id int,name varchar(20),nums int);  ---- 创建表
insert into test_demo values(1, '苹果', 1000);
insert into test_demo values(2, '苹果', 2000);
insert into test_demo values(3, '苹果', 4000);
insert into test_demo values(4, '橘子', 5000);
insert into test_demo values(5, '橘子', 3000);
insert into test_demo values(6, '葡萄', 3500);
insert into test_demo values(7, '芒果', 4200);
insert into test_demo values(8, '芒果', 5500);
commit;
 
select name, sum(nums)
  from test_demo
 group by name;
 
select *
  from (select name, nums fromtest_demo)
pivot(sum(nums)
   for name in('苹果', '橘子', '葡萄', '芒果'));
 
SQL> select *
  2    from (select name, nums from test_demo)
  3  pivot(sum(nums)
  4     for name in('苹果' as "苹果", '橘子', '葡萄', '芒果'));  --别名使用
        苹果       '橘子'       '葡萄'       '芒果'
---------- ---------- ---------- ----------
      7000       8000       3500       9700

 

这里再说语法:

pivot聚合函数 for 列名 in 类型 ,其中 in 中可以指定别名in中还可以指定子查询,比如 select distinct code from customers

2     unpivot

典型的列转行报表函数

create table Fruit(id int,name varchar(20), Q1 int, Q2 int, Q3 int,Q4 int);
这里Q1 int, Q2int, Q3 int, Q4 int表示四季度。
insert into Fruit values(1,'苹果',1000,2000,3300,5000);
insert into Fruit values(2,'橘子',3000,3000,3200,1500);
insert into Fruit values(3,'香蕉',2500,3500,2200,2500);
insert into Fruit values(4,'葡萄',1500,2500,1200,3500);
commit;
select * from Fruit;
 
select id , name, quarter, sell from Fruit unpivot (sell for quarterin (q1, q2, q3, q4));

 

注意:unpivot没有聚合函数,quartersell字段也是临时的变量。

这里sell是统计值,quarter表示季度及类型。

执行结果:

SQL> select id , name, quarter, sell from Fruit unpivot (sell forquarter in (q1, q2, q3, q4));
                                    ID NAME                QUARTER                                    SELL
--------------------------------------- -------------------- ----------------------------------------------
                                     1 苹果                 Q1                                         1000
                                     1 苹果                 Q2                                         2000
                                     1 苹果                 Q3                                         3300
                                     1 苹果                 Q4                                         5000
                                     2 橘子                 Q1                                         3000
                                     2 橘子                 Q2                                         3000
                                      2 橘子                 Q3                                         3200
                                     2 橘子                 Q4                                         1500
                                     3 香蕉                 Q1                                         2500
                                     3 香蕉                 Q2                                         3500
                                     3 香蕉                 Q3                                         2200
                                     3 香蕉                 Q4                                         2500
                                     4 葡萄                 Q1                                         1500
                                     4 葡萄                 Q2                                         2500
                                     4 葡萄                 Q3                                         1200
                                     4 葡萄                 Q4                                         3500


相关内容

热门资讯

美媒:中美元首会晤或讨论AI护... 据凤凰卫视援引美国媒体报道,美方希望借中美领导人会晤的机会,开启有关人工智能安全与管控的对话,并推动...
卫生间水管布置图尺寸高度 卫生间的水管布置可能比较复杂一些,因为卫生间的管道比较多。比如有热水器的通水管道,有座便器的冲水管道...
电脑尺寸在哪里看 电脑尺寸在哪里看1、可以选择手工测量法来测量电脑尺寸,这时测量一下屏幕对角线,因为显示面积都会小于显...
电脑机箱尺寸标准 常规的机箱一般是立体式,或桌面式,再就是横式。电脑机箱尺寸,目前市面上根据不同的规格有不同的方案。 ...
斯塔默发声:不会辞职 【环球时报驻英国特约记者 纪双城 环球时报特约记者 甄翔 于文】执政党工党在英国地方选举中遭遇“历史...
抽油烟机管道有异味怎么办 抽油烟机是厨房中不可或缺的设备,它能有效地排出油烟,保证室内空气的清新。但是,长时间使用后,抽油烟机...
抽油烟机管道有油垢怎么办 抽油烟机管道是我们家庭生活中必不可少的设备,但长时间的使用会导致管道内部积累大量的油垢,如不及时清理...
沈伯洋与台北市长格局有落差,叶... 海峡导报综合报道 民进党将正式拍板征召民代沈伯洋出战台北市长,并发布采访通知,预计在13日下午举行台...
核查:上世纪已有多款汉坦疫苗上... 明查员 冯梦速览- 人类感染汉坦病毒已有数十年历史。朝鲜战争期间,联合国军就曾有过大规模感染。汉坦病...
如何从“一证在手”走向“一技傍... 教员在给学员讲解理论知识。 学员在进行无人机试飞训...