精华内容
下载资源
问答
  • Oracle列转行unpivot
    2019-07-12 13:31:40

    unpivot可以实现列转行,所转的列的字段类型必须一致

     

    SELECT STU_NAME, TERM, COURSE_MARK

      FROM (SELECT '罗飞' STU_NAME,

                   '2001-2002' TERM,

                   '90' 微积分,

                   '88' 线性代数,

                   '85' 数据结构,

                   '70' 操作系统

              FROM DUAL) UNPIVOT(COURSE_MARK FOR TYPE IN(微积分,

                                                         线性代数,

                                                         数据结构,

                                                         操作系统))

     

    Oracle官方文档

    The unpivot_clause rotates columns into rows.

    (1) The INCLUDE | EXCLUDE NULLS clause gives you the option of including or excluding null-valued rows. INCLUDE NULLS causes the unpivot operation to include null-valued rows; EXCLUDE NULLS eliminates null-values rows from the return set. If you omit this clause, then the unpivot operation excludes nulls.

    (2) unpivot_clause: this clause specifies a name for a column to represent the unpivoted measure values. 

    (3) In the pivot_for_clause, specify a name for each output column that will hold descriptor values, such as quarter or product.

    (4) In the unpivot_in_clause, specify the input data columns whose names will become values in the output columns of the pivot_for_clause.These input data columns have names specifying a category value, such as Q1,Q2, Q3, Q4. The optional AS clause lets you map the input data column names to the specified literal values in the output columns.

     

    更多相关内容
  • Oracle列转行unpivot函数的使用

    千次阅读 2020-12-29 15:41:05
    Oracle列转行unpivot函数的使用新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...

    一、unpivot函数语法
    说明:将表中多个列缩减为一个聚合列(多列转多行
    语法:unpivot(新列名 for 聚合列名 in (对应的列名1…列名n ))

    二、实例应用
    1、unpivot的简单应用:

    SELECT STU_NAME, TERM, subject, score
      FROM (SELECT '罗飞' STU_NAME,
                   '2001-2002' TERM,
                   '90' 微积分,
                   '88' 线性代数,
                   '85' 数据结构,
                   '70' 操作系统
              FROM DUAL) UNPIVOT(score FOR subject IN(微积分,
                                                      线性代数,
                                                      数据结构,
                                                      操作系统))
    

    原数据:
    在这里插入图片描述

    运行结果:
    在这里插入图片描述
    支持别名:

    SELECT STU_NAME, TERM, subject, score
      FROM (SELECT '罗飞' STU_NAME,
                   '2001-2002' TERM,
                   '90' 微积分,
                   '88' 线性代数,
                   '85' 数据结构,
                   '70' 操作系统
              FROM DUAL) UNPIVOT(score FOR subject IN(微积分   as 'wjf',
                                                      线性代数 as 'xxds',
                                                      数据结构 as 'sjjg',
                                                      操作系统 as 'czxt'))
    order by score
    

    运行结果:
    在这里插入图片描述
    2、unpivot的进阶应用:

    with 排名表 as
    (select a.*
    ,dense_rank() over(order by chinese desc) chinese_rank
    ,dense_rank() over(order by math desc) math_rank
      from (select 'A' as name ,36 chinese, 67 math from dual
            union all                                
            select 'B' as name ,56 chinese, 47 math from dual
            union all                               
            select 'C' as name ,78 chinese, 58 math from dual
            union all                                
            select 'D' as name ,53 chinese, 96 math from dual
            union all                                
            select 'E' as name ,87 chinese, 63 math from dual
            ) a
     order by name
    )
    
    select name,学科,成绩,排名
    from 排名表
    unpivot
    ( (成绩,排名) for 学科 in ((chinese,chinese_rank) as '语文',
                             (math   ,math_rank  ) as '数学')
    )
    order by name
    

    1)原数据

    自定义一张表数据
    2)列转行
    在这里插入图片描述
    3)增加分数排名
    在这里插入图片描述
    4)列转行
    在这里插入图片描述

    三、参考资料
    1、ORACLE中一个简单的UNPIVOT例子
    2、Oracle函数——列转行功能unpivot使用的简单举例

    展开全文
  • 文章目录列转行Unpivot函数用法 列转行Unpivot函数用法 如每年的各项指标数据,数据格式如下: SELECT T.FC_Y AS FORECAST_YEAR, --年份 T.EPS AS IDX_EPS, -- 指标1 T.OPER_INC AS IDX_OPER_INC,-- 指标2 T...

    列转行Unpivot函数用法

    unpivot函数:列转行函数:
    语法:unpivot(新增值所在列的列名 for 新增列转为行后所在列的列名 in (需转为行的列名))

    如每年的各项指标数据,数据格式如下:

    SELECT 
    	T.FC_Y AS FORECAST_YEAR, --年份
    	T.EPS AS IDX_EPS, -- 指标1
    	T.OPER_INC AS IDX_OPER_INC,-- 指标2
    	T.NET_PROF AS IDX_NET_PROF,-- 指标3
    	T.PE AS IDX_PE-- 指标4
    FROM TABLE_NAME T
    WHERE T.ID = 1
    ORDER BY T.FC_Y ASC;
    

    在这里插入图片描述

    列转行

    SELECT
       T1.FORECAST_YEAR,
       T1.index_id,
       T1.index_value
    FROM (
        SELECT 
    		T.FC_Y AS FORECAST_YEAR, --年份
    		T.EPS AS IDX_EPS, -- 指标1
    		T.OPER_INC AS IDX_OPER_INC,-- 指标2
    		T.NET_PROF AS IDX_NET_PROF,-- 指标3
    		T.PE AS IDX_PE-- 指标4
    	FROM TABLE_NAME T
    	WHERE T.ID = 1
    	ORDER BY T.FC_Y ASC
    ) unpivot((index_value) for index_id in(IDX_EPS,IDX_OPER_INC,IDX_NET_PROF,IDX_PE)) T1;
    

    在这里插入图片描述

    展开全文
  • 文章目录1 概述2 示例2.1 pivot:行转2.2 unpivot列转行 1 概述 #mermaid-svg-H1fXJe7PJfunNktj {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-H1fXJe7...

    1 概述

    行列互换
    行转列:pivot
    列的个数必须已知
    列转行:unpivot
    新增列

    2 示例

    2.1 pivot:行转列

    with t_test as(
      select 1 id, '张三' name, 70 score, 'CHINESE' subject from dual union all
      select 1 id, '张三' name, 90 score, 'MATH'    subject from dual union all
      select 1 id, '张三' name, 95 score, 'ENGLISH' subject from dual union all
      select 2 id, '李四' name, 75 score, 'CHINESE' subject from dual union all
      select 2 id, '李四' name, 85 score, 'MATH'    subject from dual union all
      select 2 id, '李四' name, 90 score, 'ENGLISH' subject from dual union all
      select 3 id, '王五' name, 90 score, 'CHINESE' subject from dual union all
      select 3 id, '王五' name, 90 score, 'MATH'    subject from dual union all
      select 3 id, '王五' name, 90 score, 'ENGLISH' subject from dual
    )
    select *
      from t_test-- 表别名无效!
     pivot (sum(score) -- 聚合函数
            for subject in('CHINESE' as 语文, 'MATH' as 数学, 'ENGLISH' as 英语))
     -- where id in (1, 2, 3)
     order by id;
    

    测试结果:(细节:列的个数必须是确定的,如:语文、数学、英语)
    在这里插入图片描述

    2.2 unpivot:列转行

    with t_test as (
      select 1 id, '张三' name, 70 chinese , 90 math , 95 english from dual union all
      select 2 id, '李四' name, 75 chinese , 85 math , 90 english from dual union all
      select 3 id, '王五' name, 90 chinese , 90 math , 90 english from dual
    )
    select id,
           name,
           score   成绩, -- 新增列
           subject 学科  -- 新增列
      from t_test -- 表别名无效!
     unpivot(score for subject in(chinese, math, english))
    -- where id in (1, 2, 3)
     order by id;
    

    测试结果:
    在这里插入图片描述

    展开全文
  • 多行转字符串这个比较简单,用||或concat函数可以实现1 select concat(id,username) str from app_user23 select id||username str from app_user字符串转多实际上就是拆分字符串的问题,可以使用substr、instr、...
  • Oracle列转行_unpivot

    2021-05-03 01:47:17
    Oracle列转行_unpivot在实际业务开发环境中,我们经常会遇到要对查询的数据集进行列转行的需求。那么Oracle是如何实现的呢?本文也将通过几个实例来详细讲解一下。Oracle列转行Oracle列转行就是把一行当中的的字段...
  • Oracle ~ 行转(PIVOT)Oracle列转行_unpivot Oracle行转(PIVOT)     <点我点我可以跳转> Oracle列转行_unpivot         <点我点我可以跳转...
  • Oracle列转行 unpivot

    2020-01-09 10:05:42
    表查询出的数据如下: select xszzcj_id, xs_id, kc_id, sfzf, xnxq, zkcj, zkjd, bkcj, bkjd, hkcj, hkjd from t_cjgl_xszzcjb ...使用 unpivot 列转行操作 SQL select xszzcj_id as XSHZCJ_ID...
  • 2:借用),如图一所示:原始数据.png (58.16 KB, 下载次数: 47)2017-1-29 15:45 上传图一(1)现在,我要统计每件资产跟踪类型的次数,每件资产显示一条记录,不同的跟踪类型显示为不同的,效果如图二如下:行转...
  • 多行转字符串 这个比较简单,用||或concat函数可以实现 SQL select concat(id,username) str from app_user ...字符串转多 实际上就是拆分字符串的问题,可以使用 substr、instr、regexp_subst...
  • Oracle UNPIVOT-列转行函数

    千次阅读 2019-07-28 14:11:15
    语法:unpivot(新增值所在的列名 for 新增转为行后所在的列名 in (需转为行的列名)); 执行原理:将pivot函数或unpivot函数接在查询结果集的后面。相当于对结果集进行处理。 测试数据 With ft as ( select 1 ...
  • ORACLE行转函数(pivot): with test as ( select '001' stu_num,'数学' stu_class,100 stu_score from dual union select '001' stu_num,'语文' stu_class,63 stu_score from dual union select '001' stu_num,'...
  • 标签:group byunptabble转行int建表artoraclcreate table demo(id int,name varchar(20),nums int); ---- 创建表insert into demo values(1, ‘苹果‘, 1000);insert into demo values(2, ‘苹果‘, 2000);in...
  • 简单的Oracle列转行函数Listagg示例:CREATE TABLE tbl_test(catalog VARCHAR(1),product VARCHAR(2),amount NUMBER);INSERT INTO tbl_test VALUES('A','A1',1);INSERT INTO tbl_test VALUES('A','A1',2);INSERT ...
  • Unpivot 列转行

    2021-03-14 11:39:52
    背景说明OracleUNPIVOT语法:SELECT ...FROM ...UNPIVOT [INCLUDE|EXCLUDE NULLS](unpivot_clauseunpivot_for_clauseunpivot_in_clause )WHERE ...示例如下:SQL> SELECT *2 FROM pivoted_data3 UNPIVOT (4 ...
  • 行转行转的大致意思是,将表中多行数据转成一行的多个字段输出。需要行转的业务逻辑通常是,将表中的一个字段分类统计后作为多个结果字段输出。一个简单例子:有一个学生表,有姓名、学科、成绩三个字段Java...
  • oracle 列转行

    2020-12-21 03:34:57
    展开全部Oracle11g 行列互换 pivot 和 unpivot 说明在Oracle 11g中,Oracle 又增加了2个查询:pivot(行转) 和unpivot(列转行)参考:https://blog.csdn.net/tianlesoftware/article/details/7060306、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 630
精华内容 252
关键字:

oracle列转行unpivot