当前位置:Gxlcms > 数据库问题 > Oracle行转列(使用pivot函数)

Oracle行转列(使用pivot函数)

时间:2021-07-01 10:21:17 帮助过:2人阅读

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函数,实现列转换的操作,项目中还没有使用,也就没有细细研究了。 参考地址:http://blog.csdn.net/xb12369/article/details/39554935 解决长久以来遇到的问题,心情舒畅,遂记录于此,方便后来查看

 

Oracle行转列(使用pivot函数)

标签:

人气教程排行