暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何将行转换为列

ASKTOM 2019-02-07
183

问题描述

嗨,

我的数据如下表所示

create table chart(
SERIES  varchar2(10),
LABEL   date,
VALUE   number(5,2)
);

insert into chart values('A',to_date('13-DEC-18','DD-MON-YY'),83.55);
insert into chart values('B',to_date('13-DEC-18','DD-MON-YY'),7);
insert into chart values('C',to_date('13-DEC-18','DD-MON-YY'),7);

我需要将这些数据转换为

         A             B            C
LABEL 13-DEC-18     13-DEC-18   13-DEC-18
VALUE 83.55            7           7

在转换数据时需要帮助

谢谢,
吉里什

专家解答

所以,你需要做:

-标签和值行 (展开)
-系列柱 (枢轴)

您可以通过将枢轴枢轴链接在一起来实现这一点

with rws as ( 
  select series, 
         to_char ( label, 'DD-MON-YYYY' ) label,
         to_char ( value ) value
  from   chart 
)
  select * from rws
  unpivot (
    val for col in (
      label, value 
    )
  )
  pivot (
    max ( val ) for series in (
      'A' a, 'B' b, 'C' c
    ) 
  )
  order  by col;

COL     A             B             C             
LABEL   13-DEC-2018   13-DEC-2018   13-DEC-2018   
VALUE   83.55         7             7      


您可以在以下位置阅读有关这些工作原理的更多信息:https://blogs.oracle.com/sql/how-to-convert-rows-to-columns-and-back-again-with-sql-aka-pivot-and-unpivot
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论