度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1396|回复: 5
打印 上一主题 下一主题

[分享] Oracle列转行函数(pivot )使用宝典

[复制链接]

348

主题

3572

帖子

9334

积分

论坛元老

Rank: 8Rank: 8

积分
9334
跳转到指定楼层
楼主
发表于 2020-6-18 10:33:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 万望 于 2016-8-18 10:38 编辑

在Oracle 11g中,Oracle 又增加了查询:pivot列转行)函数
函数详解参考ORAClE官方文档:http://www.oracle.com/technetwor ... vot-101924-zhs.html


pivot 列转行测试数据 (id,类型名称,销售数量),案例:根据水果的类型查询出一条数据显示出每种类型的销售数量。
  1. <span style="background-color: white;">create table demo(id int,name varchar(20),nums int);  ---- 创建表
  2. insert into demo values(1, '苹果', 1000);
  3. insert into demo values(2, '苹果', 2000);
  4. insert into demo values(3, '苹果', 4000);
  5. insert into demo values(4, '橘子', 5000);
  6. insert into demo values(5, '橘子', 3000);
  7. insert into demo values(6, '葡萄', 3500);
  8. insert into demo values(7, '芒果', 4200);
  9. insert into demo values(8, '芒果', 5500);</span>
复制代码



分组查询 (当然这是不符合查询一条数据的要求的)
  1. <span style="background-color: white;">select name, sum(nums) nums from demo group by name</span>
复制代码



行转列查询
  1. <span style="background-color: white;">select * from (select name, nums from demo) pivot (sum(nums) for name in ('苹果' 苹果, '橘子', '葡萄', '芒果'));</span>
复制代码



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

当然也可以不使用pivot函数,等同于下列语句,只是代码比较长,容易理解

  1. <span style="background-color: white;">select * from (select sum(nums) 苹果 from demo where name='苹果'),(select sum(nums) 橘子 from demo where name='橘子'),
  2.        (select sum(nums) 葡萄 from demo where name='葡萄'),(select sum(nums) 芒果 from demo where name='芒果');</span>
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

348

主题

3572

帖子

9334

积分

论坛元老

Rank: 8Rank: 8

积分
9334
沙发
 楼主| 发表于 2020-6-18 10:39:26 | 只看该作者
时刻保持学习的姿态,补充大脑
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9334

积分

论坛元老

Rank: 8Rank: 8

积分
9334
板凳
 楼主| 发表于 2020-6-18 22:12:51 | 只看该作者
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9334

积分

论坛元老

Rank: 8Rank: 8

积分
9334
地板
 楼主| 发表于 2020-6-18 22:13:44 | 只看该作者
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
5#
发表于 2020-6-18 22:22:33 | 只看该作者
这个文章我今天也看过
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
6#
发表于 2020-6-18 22:23:01 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-27 19:40 , Processed in 0.119167 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表