博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle行转列(使用pivot函数)
阅读量:6688 次
发布时间:2019-06-25

本文共 1640 字,大约阅读时间需要 5 分钟。

在日常使用中,经常遇到这样的情况,需要将数据库中行转化成列显示,如

转化为
这个时候,我们就需要使用pivot函数
百度后,参考网址  ,完成了以下操作
with temp as(
select '四川省' nation ,'成都市' city,'第一' ranking from dual union all
select '四川省' nation ,'绵阳市' city,'第二' ranking from dual union all
select '四川省' nation ,'德阳市' city,'第三' ranking from dual union all
select '四川省' nation ,'宜宾市' city,'第四' ranking from dual union all
select '湖北省' nation ,'武汉市' city,'第一' ranking from dual union all
select '湖北省' nation ,'宜昌市' city,'第二' ranking from dual union all
select '湖北省' nation ,'襄阳市' city,'第三' ranking from dual
)
select * from select nation,city,ranking from temppivot (max(city) for ranking in ('第一' as 第一,'第二' AS 第二,'第三' AS 第三,'第四' AS 第四));
这样就顺利的实现了操作,其中关键函数pivot,其用法如下
pivot(聚合函数 for 列名 in(类型))
--其中 in(‘’) 中可以指定别名,in中还可以指定子查询,比如 select distinct ranking from temp
当然也可以不使用pivot函数,使用下面的语句同样可以实现效果
with temp as(
select '四川省' nation ,'成都市' city,'第一' ranking from dual union all
select '四川省' nation ,'绵阳市' city,'第二' ranking from dual union all
select '四川省' nation ,'德阳市' city,'第三' ranking from dual union all
select '四川省' nation ,'宜宾市' city,'第四' ranking from dual union all
select '湖北省' nation ,'武汉市' city,'第一' ranking from dual union all
select '湖北省' nation ,'宜昌市' city,'第二' ranking from dual union all
select '湖北省' nation ,'襄阳市' city,'第三' ranking from dual
)
 
select nation,
max(decode(ranking, '第一', city, '')) as 第一,
max(decode(ranking, '第二', city, '')) as 第二,
max(decode(ranking, '第三', city, '')) as 第三,
max(decode(ranking, '第四', city, '')) as 第四
from temp group by nation;
当然Oracle还提供了unpivot函数,实现列转换的操作,项目中还没有使用,也就没有细细研究了。
参考地址:
解决长久以来遇到的问题,心情舒畅,遂记录于此,方便后来查看

转载于:https://www.cnblogs.com/myjoan/p/9585337.html

你可能感兴趣的文章
Linux高可用 Heartbeat CRM节点得分计算
查看>>
写在最前面 - 每天5分钟玩转 OpenStack(1)
查看>>
centos6.2 静默安装oracle 11g 建库及相关问题解决
查看>>
用Python脚本实现对Linux服务器的监控
查看>>
Python的点滴笔记之:推导式
查看>>
Oracle数据库加固——密码策略
查看>>
高性能Web服务之tomcat基础应用详解(一)
查看>>
处理logs,进行分析web展示。
查看>>
8月第二周B2B类网站排名:金泉网跃升第四
查看>>
9月第3周游戏运营类网站/频道:91.com下降7位
查看>>
Memcached Multiget
查看>>
1月第二周.COM增7.1万 亚洲域名.ASIA净减2.4万
查看>>
Swift的学习Day03(操作符)
查看>>
3月第2周全球域名商TOP15:中国占据3个席位
查看>>
yii2.0 修改默认控制器
查看>>
解决apache无法启动:undefined symbol: apr_ldap_ssl_init
查看>>
Linux网络字节序
查看>>
myeclipse的字体背景色设置
查看>>
一次开发、多端分发,阿里巴巴发布AliOS车载小程序
查看>>
TalkingData的Spark On Kubernetes实践
查看>>