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

测试数据如下:

ID1 ID2 ID3 ID4 ID5
1 2 3 4 5
11 22 33 44 55
111 222 333 444 555

结果如下:

ID1 11
ID2 22
ID3 33

方法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种方法的更多相关文章

  1. sql语句实现行转列的3种方法实例

    sql语句实现行转列的3种方法实例 一般在做数据统计的时候会用到行转列,假如要统计学生的成绩,数据库里查询出来的会是这样的,但这并不能达到想要的效果,所以要在查询的时候做一下处理,下面话不多说了,来一 ...

  2. Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

    这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from ap ...

  3. oracle 行转列 分析函数

    oracle 行转列 首先看一下源数据: 方法一:WM_CONCAT group by 这个方法没有问题. SELECT CODE_TS, WMSYS.WM_CONCAT(S_NUM + || ':' ...

  4. oracle rename数据文件的两种方法

    oracle rename数据文件的两种方法 2012-12-11 20:44 10925人阅读 评论(0) 收藏 举报  分类: oracle(98)  版权声明:本文为博主原创文章,未经博主允许不 ...

  5. Oracle 数据库分页查询的三种方法

    一.Oracle 数据库分页查询的三种方法 1.简介 不能对 rownum 使用 >(大于或等于 1 的数值).>=(大于 1 的数值).=(不等于 1 的数值),否则无结果.所以直接用 ...

  6. oracle 行转列~列转行(几种方法)

    工作中,我们经常会碰到行转列的情况 这里我介绍几种简单的方法--行转列 1.oracle的pivot函数 原表 使用pivot函数: with temp as(select '四川省' nation ...

  7. Oracle多行记录合并的几种方法

    今天正好遇到需要做这个功能,顺手搜了一下网络,把几种方法都列出来,方便以后参考. 1 什么是合并多行字符串(连接字符串)呢,例如: SQL> desc test; Name Type Nulla ...

  8. Oracle行转列、列转行的Sql语句总结

    多行转字符串 这个比较简单,用||或concat函数可以实现  SQL Code  12    select concat(id,username) str from app_userselect i ...

  9. Oracle行转列、列转行的Sql语句总结(转)

    多行转字符串 这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_userselect id||username str f ...

随机推荐

  1. CSS小例收藏

    body { background-color: #e8dabf; background-image: url(img/bg.png), url(img/bg_tile.png); backgroun ...

  2. java数组的引用

    数组属于应用型变量,因此两个相投类型的数组如果具有相同的引用,它们就有完全相同的元素 如: int a[]={1,2,3},b[]={4,5} 如果a=b;则a[]={4,5} public clas ...

  3. Node.js学习 - Modules

    创建模块 当前目录:hello.js, main.js // hello.js exports.world = function() { // exports 对象把 world 作为模块的访问接口 ...

  4. for循环与foreach

    注意点: for循环时,可以对集合进行操作,但foreach循环中,对集合进行操作会报错:                  for 循环可以获取下标 如下代码: package com.tt;imp ...

  5. PAT (Advanced Level) 1113. Integer Set Partition (25)

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  6. UVALive 6887 Book Club

    最大流,有向环覆盖问题. #include<cstdio> #include<cstring> #include<string> #include<cmath ...

  7. The Accumulation of Capital

    The Accumulation of Capital ---- by *Adam Smith Capitals are increased by parsimony, and diminished ...

  8. Ubuntu vim显示行号语法高亮自动缩进

    配置文件名为Ubuntu vimrc在Fedora中vim的配置文件存放在/etc目录中,配置文件名为Ubuntu vimrc在终端 输入以下命令来编辑Ubuntu vimrc配置文件:sudo vi ...

  9. ecb gud

    mx gdb不好用,好像是因为用了一个dedicated window,改用mx gud-gdb,好用. http://stackoverflow.com/questions/13560933/how ...

  10. android zip解压缩

    android  zip解压缩 public class ZipUtils { public ZipUtils() { } /* 以输入流的形式解压 */ public static void UnZ ...