Oracle行转列的3种方法

摘要:
测试表为A3,有5个字段:ID1,ID2,ID3,ID4,ID5测试数据如下:ID1ID2ID3ID4ID5123451122334455111222333444555结果如下:ID111ID222ID333方法1:使用系统表SELECTDECODE(COLUMN_NAME,COLUMN_NAME,COLUMN_NAME)NAME,DECODE(COLUMN_NAME,'ID1',ID1,'ID2

测试表为A3 , 有5个字段:ID1, ID2, ID3, ID4, ID5

测试数据如下:

ID1ID2ID3ID4ID5
12345
1122334455
111222333444555

结果如下:

ID111
ID222
ID333

方法1:使用系统表

SELECT DECODE(COLUMN_NAME, COLUMN_NAME, COLUMN_NAME) NAME,
DECODE(COLUMN_NAME, 'ID1', ID1, 'ID2', ID2, 'ID3', ID3) VALUE
FROM USER_TAB_COLUMNS U, A3 T
WHERE U.TABLE_NAME = 'A3' AND T.ID5='55'
AND U.COLUMN_NAME IN ('ID1', 'ID2', 'ID3');

方法2:使用ROWNUM
SELECT DECODE(N, 1, 'ID1', 2, 'ID2', 3, 'ID3') AS NAME,
DECODE(N, 1, S.ID1, 2, S.ID2, 3, S.ID3) AS VALUE
FROM (SELECT T.* FROM A3 T WHERE T.ID5 = '55') S,
(SELECT ROWNUM N FROM DUAL CONNECT BY ROWNUM <= 3);

方法3:使用UNION ALL,最简单的方法
SELECT 'ID1' NAME, ID1 VALUE FROM A3 T WHERE T.ID5='55' UNION ALL
SELECT 'ID2' NAME, ID2 VALUE FROM A3 T WHERE T.ID5='55' UNION ALL
SELECT 'ID3' NAME, ID3 VALUE FROM A3 T WHERE T.ID5='55';

免责声明:文章转载自《Oracle行转列的3种方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CSV文件在服务器上直接导入hiveChrome 浏览器显示“网站连接不安全”,是什么原因?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

如何在oracle中导入dmp数据库文件

如何在oracle中导入dmp数据库文件 --如何在oracle中导入dmp数据库文件                          Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构...

oracle--10安装问题

01,ins_ctx.mk INFO: make: *** [ctxhx] Error 1 INFO: End output from spawned process. INFO: ---------------------------------- INFO: Exception thrown from action: make Exception N...

oracle递归查询子节点

  通过子节点向根节点追朔. select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid 通过根节点遍历子节点(不包含根节点). select * from persons.dept start with paredeptid=0 connect by...

Oracle用户,权限,角色以及登录管理 scoot 授权

Oracle用户,权限,角色以及登录管理 1. sys和system用户的区别 system用户只能用normal身份登陆em。除非你对它授予了sysdba的系统权限或者syspoer系统权限。sys用户具有“SYSDBA”或者“SYSOPER”权限,登陆em也只能用这两个身份,不能用normal。 -- 最重要的区别,存储的数据的重要性不同 sys所有...

转:sqlplus使用总结

为什么我要使用sqlplus: SQLPLUS很多人用的并不多,在我观察周围来看,很多人都在使用PLSQL DEVELOPER,尤其是开发人员,更是如此,那学习SQLPLUS有啥好处呢?在我看来有如下三点1、当我们要在UNIX平台用SHELL访问数据库(如:做一些后台操作,定时任务等等),这个时候SQLPLUS是唯一选择。2、SQLPLUS 是ORACLE...

dbstart和dbshut启动、关闭数据库报错ORACLE_HOME_LISTNER is not SET解决办法

dbstart启动数据库报错,如下: [oracle@wen ~]$ dbstartORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net ListenerUsage: /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart ORACLE...