正文
oracle如何行变列 oracle如何把行变成列
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
oracle数据库关于把表的行变成列
姓名 数学 语文 姓名 张飞 赵云 庞统
张飞 60 61 数学 60 80 99
赵云 80 85 变成 语文 61 85 80
庞统 99 80
而且第一行为列名oracle如何行变列,不是表中的数据oracle如何行变列,这样的话
也就是第一个表下面三行的数据oracle如何行变列,变成第二个表下面两行的数据
这样还是可以的
oracle 行转列 ,这个要怎么转
with t(cate_displayname,info_waritername,count) as (
select '2014年','lizifeng',1 from dual
union all
select '历史沿革','wenqingwen',20 from dual
union all
select '领导讲话','lizifeng',3 from dual
)
SELECT cate_displayname,
nvl(lizifeng,0) as lizifeng,
nvl(wenqingwen,0) as wenqingwen
FROM t
PIVOT (
sum(count) ---- pivot_clause
FOR info_waritername ---- pivot_for_clause
IN ('lizifeng' as lizifeng,'wenqingwen' as wenqingwen) ---- pivot_in_clause
);
输出:
CATE_DISPLAYNAME LIZIFENG WENQINGWEN
------------------------ ---------- ----------
2014年 1 0
历史沿革 0 20
领导讲话 3 0
oracle如何实现行转列
用union all
假设列名分别为 col1 cola colb...
select col1,cola
from tabname
where ...
union all
select col1,colb
from tabname
where ...
union all
select col1,colc
from tabname
where ...
union all
select col1,cold
from tabname
where ...
union all
select col1,cole
from tabname
where ...
union all
select col1,colf
from tabname
where ...
oracle 行转换为列
如果oracle如何行变列你要做转换查询oracle如何行变列,真心劝你不要这么干,我的写法很麻烦,一张表不停的查询,逻辑读肯定搞得要死。
如果是往下面这张表灌数,那么可以写循环,慢慢来一行对应一列,可以根据表的列和数据的对应关系往里面灌,这个相对简单些。
我的写法大概是子查询+union
all
上面为a表
那么就写为select
‘第一季度'
销售额,(select
第一季度销售额
from
a
where
产品名称='奶酪')奶酪,(select
第一季度销售额
from
a
where
产品名称='啤酒')
from
dual
union
all
还像上面那么写,写第二季度
union
all
第三季度
union
all
第四季度
一张表重读查询8次,如果表很大,我估计机器会宕掉的。
因为单独从一列来看也可以理解为列转行,所以用case
when写也可以,这么写似乎读取的次数会少些,不过要用到group
by分组,天知道二者最后谁的消耗大。不过如果表很大的话,还是那句话,建议新建表然后灌数,这么直接查,真的会死掉的。
以上为个人建议,如果找到什么好写法,也可以研究下。
Oracle列转行,行转列
oracle下可以用函数decode处理:
select 产品名称,
sum(decode(季度,'第一季度',销售额,0)) 第一季度销售额,
sum(decode(季度,'第二季度',销售额,0)) 第二季度销售额,
sum(decode(季度,'第三季度',销售额,0)) 第三季度销售额,
sum(decode(季度,'第四季度',销售额,0)) 第四季度销售额,
from 表名
group by 产品名称;
oracle如何行变列的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle如何把行变成列、oracle如何行变列的信息别忘了在本站进行查找喔。