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


相关内容

热门资讯

卖“毒蛋”的人,抓到了 作者 | 何国胜 编辑 | 向现“(人)抓到了,目前案件正在侦办中。”7月28日晚间,苏州禁毒部门有...
尺素金声丨实施零关税国家达63... 海关总署发布的数据显示,今年5月1日起,我国对53个非洲建交国全面实施零关税举措,目前,我国实施零关...
职业索赔盯上基层诊所,倒逼用药... 文 | 布丁基层诊所正在被职业索赔盯上。据新京报,去年夏天,一男子走进河南南阳一家诊所,要求购买三瓶...
“西瓜我全买了”就可以肆意妄为... 拿西瓜砸了人,把瓜都买了,就能一走了之吗?事实证明,这套逻辑在法治社会行不通。7月28日晚,据海峡都...
科学家在日本广岛发现新物质,系... 在美国对日本广岛进行原子弹轰炸近81年后,科学家们在广岛的沙滩上发现了一种奇异且从未被发现过的新物质...
AI失控,反噬开始 作者 | 贺一 编辑 | 阿树近期,中国开源模型在美国频繁引发热议。7月28日,月之暗面发布Kimi...
“总统千金天价离婚”,分到43... 2026年7月24日下午,首尔高等法院,一场持续近十年的司法拉锯战终于接近尾声。法庭裁定SK集团会长...
巴基斯坦,又拿下一个历史性协议 全世界都没想到,接连的中东大战,巴基斯坦正成为最大赢家。去年以色列追杀哈马斯,空袭卡塔尔首都,阿拉伯...
汇正财经贺峰的一对一指导服务怎...   对于考虑购买证券投资顾问服务的投资者来说,'一对一指导服务怎么样'是一个重要的考量维度。需要首先...
重庆失联00后网格员龚宝冬确认...   重庆失联00后网格员龚宝冬确认遇难  【重庆失联00后网格员龚宝冬确认遇难】2026年7月29日...