这两天在做一个日目标的任务, 用到oracle 列转行的 技术。刚开始我百度了很多,连关键字要怎么输入都不知道,最后问了一下大神,大神说,好像是列转行,行转列! 然后一输入,结果就出来了,跟着大神混,有肉吃... 废话不多说,开始上代码:
先记录一下参考的网址: http://www.2cto.com/database/201501/367164.html ; 先截个图:
注释: jidu 、 xiaoshou: :
这两个字段 并不是在原表里面的字段,是临时命名的新字段!
unpivot : 就是最神奇的东西了, 看看上图中,第一张图片就是原表,第二张图片就是 列转行后的效果,牛逼不!
我发现跟着尹大神混,写的代码越来越牛逼了,感觉太棒了,隐隐约约有种感觉,在大神身边写代码,终究也是要成为大神的,哈哈哈!
接下来也把行转列的代码也总结一下吧,虽然本次没有用到,但是以后可能有用:
先记录一下参考的网址: http://www.2cto.com/database/201501/367164.html ; 先截个图:
select
id ,
name
, jidu, xiaoshou
from
Fruit unpivot (xiaoshou
for
jidu
in
(q1, q2, q3, q4) )
unpivot : 就是最神奇的东西了, 看看上图中,第一张图片就是原表,第二张图片就是 列转行后的效果,牛逼不!
我发现跟着尹大神混,写的代码越来越牛逼了,感觉太棒了,隐隐约约有种感觉,在大神身边写代码,终究也是要成为大神的,哈哈哈!
接下来也把行转列的代码也总结一下吧,虽然本次没有用到,但是以后可能有用:
select
*
from
(
select
name
, nums
from
demo) pivot (
sum
(nums)
for
name
in
(
'苹果'
苹果,
'橘子'
,
'葡萄'
,
'芒果'
));
效果就是从上图中的第一张图片,变成了第二张图片,原先的行数据,变成了后面的列名 ,还可以取别名哦!先收藏起来!