首先创建测试环境

create table test1(
user_account varchar2(100),
signup_date date,
user_email varchar2(100),
friend1_email varchar2(100),
friend2_email varchar2(100),
friend3_email varchar2(100)
);

insert into test1
values
  ('Rjbryla',
   to_date('2009-08-21', 'yyyy-mm-dd'),
   'rjbryla@example.com',
   'rjbdba@example.com',
   'pensivepenman@example.com',
   'unclebob@example.com');

insert into test1
values
  ('johndoe',
   to_date('2009-08-22', 'yyyy-mm-dd'),
   'janedoe@example.com',
   null,
   'dog@example.com',
   null);

--查询表中的内容

   select user_account, signup_date, src_col_name, friend_email
  from test1 unpivot((friend_email) for src_col_name in(user_email,
                                                               friend1_email,
                                                               friend2_email,
                                                               friend3_email));

该语句的作用就是将列转成行,src_col_name.friend_email是临时变量,unpivot(聚合函数 for 列名 in(类型)) 是基本语法  ,其中 in(‘’) 中可以指定别名,in中还可以指定子查询;该语句查询出来的结果如下图所示:

oracle11g之前的sql语句为:

select user_account,signup_date,'USER_EMAIL' as src_col_name,user_email as friend_email from test1
where user_email is not null
union
select user_account,signup_date,'FRIEND1_EMAIL' as src_col_name,user_email as friend_email from test1
where friend1_email is not null
union
select user_account,signup_date,'FRIEND2_EMAIL' as src_col_name,user_email as friend_email from test1
where friend2_email is not null
union
select user_account,signup_date,'FRIEND3_EMAIL' as src_col_name,user_email as friend_email from test1
where friend3_email is not null;

oracle的列转行相关推荐

  1. Oracle的列转行问题

    Oracle的列转行问题 Oracle中使用语句将行数据转换称不同的列表示,或者将不同的列数据写到同一列的不同行上的行列转换问题是一个非常传统的话题. 网络上流传了很多将行数据转换称列数据的方法和应用 ...

  2. oracle列转行用逗号隔开,Oracle逗号分隔列转行实现方法

    Oracle逗号分隔列转行实现方法 那么,现在如果给出一个权限编号,要去检索出用后这个权限的用户集合,就会需要在逗号分隔的多个权限编号中去匹配给出的这个权限编号.如果使用like去做,一则效率不高,二 ...

  3. oracle pivot 列转行,Oracle 列转行函数pivot

    作为数据库应用开发人员,我们有很大的精力应付在处理各种各样的数据类型,展现各种维度的报表上面. [url=]行转列[/url].列转行是我们经常会遇到的"诡异"需求.标准SQL没有 ...

  4. oracle sql列转行_oracle 列转行

    业务中做报表,需要将一列列数据汇总成一行,然后汇总,如下: 需要将每个产品进行汇总,通过ichartjs进行展示,图表中需要数据的顺序是: Java代码 var data = [ { name :'产 ...

  5. oracle数据列转行排序,oracle 列转行函数 WMSYS.WM_CONCAT 排序不规则处理

    业务中做报表,需要将一列列数据汇总成一行,然后汇总,如下: 需要将每个产品进行汇总,通过ichartjs进行展示,图表中需要数据的顺序是: var data = [ { name : '产品1', v ...

  6. oracle sql列转行_ORACLE 列转行和行转列的SQL和函数

    本文介绍两种行.列转换方法,一种是常规的SQL,一种是ORACLE 11G提供的函数.下面使用一个小例子对这两种方法进行说明. ---------------------------------原始表 ...

  7. oracle行转列逗号分隔,Oracle逗号分隔列转行实现方法

    那么,现在如果给出一个权限编号,要去检索出用后这个权限的用户集合,就会需要在逗号分隔的多个权限编号中去匹配给出的这个权限编号.如果使用like去做,一则效率不高,二则匹配不精确.因此用到了逗号分隔列转 ...

  8. oracle游标列转行,Oracle行转列和列转行

    一.行转列 1.1.初始测试数据 表结构:TEST_TB_GRADE Sql代码: 1    create table TEST_TB_GRADE 2    ( 3      ID        NU ...

  9. oracle实现列转行

    用union all可以实现列转行 数据库列  :ind_code , ind_name , data_d,data_m,data_y 111             收入            22 ...

  10. 怎么给oracle数据库列转行,oracle数据库 行转列 列转行详解

    [一].行转列 1.1.初始测试数据 表结构:TEST_TB_GRADE create table TEST_TB_GRADE ( ID        NUMBER(10)notnull, USER_ ...

最新文章

  1. 御水.20180506
  2. 运用jieba库分词
  3. linux下模拟CPU占用100%小程序
  4. Leetcode 415. 字符串相加
  5. 分布式MySQL数据库TDSQL架构分析
  6. Why expand does not work for complex note
  7. 单元和集成测试的代码覆盖率
  8. 从条纹边框的实现谈盒子模型
  9. 【前端小技巧】利用border画三角形及梯形
  10. CentOS安装PinPoint
  11. HTTP协议-GET/POST请求
  12. sublime3定制化为python3编辑利器。
  13. OFDM信号的产生与解调
  14. 利用脚本一键删除微博
  15. Spring 源码分析(七)--bean的加载详细分析
  16. 解决物理机为ubuntu与virtualbox客户机为windows10间剪切板不能用的问题
  17. httpd模块支持https请求模块mod_ssl
  18. 【装机吧】Win7电脑系统32位和64位区别(详细版)
  19. 阿里云SSL数字证书Nginx配置部署
  20. 如何测试UDP端口连通性

热门文章

  1. 串口协议“USB/TTL转232“模块的工作原理
  2. python运行环境提示:No module named ‘logbook‘,怎么解决
  3. Windows编程 GDI简单图形的绘制 简单实现锁帧效果
  4. C++之emplace
  5. php排大小函数,PHP获取文件夹大小函数
  6. 如何将doc格式文档转换为txt的文档
  7. 多线程之间如何实现同步?
  8. 荣耀3手机android 5.0吗,荣耀畅玩5X的手机系统是什么?能升级安卓5.0吗?
  9. 求数组元素最值(比武招亲式)
  10. java网络爬虫开发笔记