如何把ORACLE数据表的列变成行

时间:2022-01-03 03:00:57
如何把ORACLE数据表的列变成行

在实际做项目的过程中,遇到一个问题,以前没有做过,想请教大家帮帮忙

现在有一个表,样式如下
如何把ORACLE数据表的列变成行


COLUMN1,COLUMN2,COLUMN3,COLUMN4,COLUMN5是字段名
c1Value1,c2Value1,c3Value1,c4Value1,c5Value1是第一行数据值
c1Value2,c2Value2,c3Value2,c4Value2,c5Value2是第二行数据值

现在我想用一个视图把这个表旋转-90度,形成以下效果
如何把ORACLE数据表的列变成行

这个效果该如何实现,请大家帮帮忙,感激不尽!

7 个解决方案

#1


Unpivot函数

#2


这个是干啥用的,如果是报表中使用的话,大可在报表中去实现
大多数报表工具都可以选择横向扩展数据或纵向扩展数据

从数据库这边能解决,可是比较麻烦,
使用存储过程动态拼接语句创建视图,然后从视图中进行查询

相比较而言,在报表中实现可能更容易一点

#3


没有别的办法了吗?

#4


再次求教解决方法,请指教!

#5


wm_concact 列转行,效果比你要的差一点

#6


如果是11g以上,可以用2楼的办法,具体语句如下 :
select * From table
unpivot
(
   col_val    --指定c1Value1,c2Value1。。。。的列名
   FOR col_desc  --定义COLUMN1,COLUMN2.。。。的列名
   IN  (COLUMN1,COLUMN2,COLUMN3,COLUMN4,COLUMN5)
);

#1


Unpivot函数

#2


这个是干啥用的,如果是报表中使用的话,大可在报表中去实现
大多数报表工具都可以选择横向扩展数据或纵向扩展数据

从数据库这边能解决,可是比较麻烦,
使用存储过程动态拼接语句创建视图,然后从视图中进行查询

相比较而言,在报表中实现可能更容易一点

#3


没有别的办法了吗?

#4


再次求教解决方法,请指教!

#5


wm_concact 列转行,效果比你要的差一点

#6


如果是11g以上,可以用2楼的办法,具体语句如下 :
select * From table
unpivot
(
   col_val    --指定c1Value1,c2Value1。。。。的列名
   FOR col_desc  --定义COLUMN1,COLUMN2.。。。的列名
   IN  (COLUMN1,COLUMN2,COLUMN3,COLUMN4,COLUMN5)
);

#7