oracle行转列?

lhh86585524 2014-10-27 03:51:13

如图是一个4列14行,如何将其转换成为3行15列的数据
type A单位 B单位 C单位 。。。
受理数 1 2 3 。。。
办结数 1 1 1 。。。
超期数 0 1 2 。。。
...全文
489 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ffshao 2014-11-25
  • 打赏
  • 举报
回复
引用 5 楼 bw555 的回复:
可以使用语句生成上述查询语句,但是除了xml中可以使用any关键字,其他地方只能把所有值都枚举出来 执行下面语句生成查询语句,将生成的查询语句拿去执行就是了
select 
'SELECT TYPE,'||
WMSYS.WM_CONCAT('MAX(DECODE(NAME,'''||NAME||''',VALUE) as 单位'||ROWNUM) 
||'
FROM(
select name,''受理数'' as type,受理数 AS VALUE from T
UNION ALL
select name,''办结数'' as type,办结数 AS VALUE from T
UNION ALL
select name,''超期数'' as type,超期数 AS VALUE from T)
GROUP BY TYPE' from T
受教了,以前都是用SQLServer采用pivot 和 unpivot ,在oracle 10g里只能用这种办法了?有没有其他办法,学习下!!
bw555 2014-10-28
  • 打赏
  • 举报
回复
可以使用语句生成上述查询语句,但是除了xml中可以使用any关键字,其他地方只能把所有值都枚举出来 执行下面语句生成查询语句,将生成的查询语句拿去执行就是了
select 
'SELECT TYPE,'||
WMSYS.WM_CONCAT('MAX(DECODE(NAME,'''||NAME||''',VALUE) as 单位'||ROWNUM) 
||'
FROM(
select name,''受理数'' as type,受理数 AS VALUE from T
UNION ALL
select name,''办结数'' as type,办结数 AS VALUE from T
UNION ALL
select name,''超期数'' as type,超期数 AS VALUE from T)
GROUP BY TYPE' from T
jsshizhanab 2014-10-28
  • 打赏
  • 举报
回复
引用 2 楼 bw555 的回复:
SELECT TYPE,
MAX(DECODE(NAME,'单位1',VALUE) as 单位1, 
MAX(DECODE(NAME,'单位2',VALUE) as 单位2, 
MAX(DECODE(NAME,'单位3',VALUE) as 单位3, 
……
……
FROM(
select name,'受理数' as type,受理数 AS VALUE from T
UNION ALL
select name,'办结数' as type,办结数 AS VALUE from T
UNION ALL
select name,'超期数' as type,超期数 AS VALUE from T)
GROUP BY TYPE
这样写的话就必须得知道它有哪些单位啊
bw555 2014-10-27
  • 打赏
  • 举报
回复
11g 之后可使用 pivot 和 unpivot 参考 Oracle 11g 行列互换 pivot 和 unpivot 说明
bw555 2014-10-27
  • 打赏
  • 举报
回复
SELECT TYPE,
MAX(DECODE(NAME,'单位1',VALUE) as 单位1, 
MAX(DECODE(NAME,'单位2',VALUE) as 单位2, 
MAX(DECODE(NAME,'单位3',VALUE) as 单位3, 
……
……
FROM(
select name,'受理数' as type,受理数 AS VALUE from T
UNION ALL
select name,'办结数' as type,办结数 AS VALUE from T
UNION ALL
select name,'超期数' as type,超期数 AS VALUE from T)
GROUP BY TYPE
bw555 2014-10-27
  • 打赏
  • 举报
回复
使用union all 列转行,然后再使用max(decode)行转列

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧