Oracle 几种行转列的方式 sum+decode sum+case when pivot
  yqdtHKhvd9Ja 2023年12月15日 76 0


目录

原始数据:

方式一:

方式二:

方式三:

unpivot的使用:


原始数据:

Oracle 几种行转列的方式 sum+decode sum+case when pivot_原始数据

方式一:

select t_name,
       sum(decode(t_item, 'item1', t_num, 0)) item1,
       sum(decode(t_item, 'item2', t_num, 0)) item2,
       sum(decode(t_item, 'item3', t_num, 0)) item3,
       sum(t_num) total
  from test
 group by t_name;

Oracle 几种行转列的方式 sum+decode sum+case when pivot_oracle_02

方式二:

select t_name,
       sum(case
             when t_item = 'item1' then
              t_num
             else
              0
           end) item1,
       sum(case
             when t_item = 'item2' then
              t_num
             else
              0
           end) item2,
       sum(case
             when t_item = 'item3' then
              t_num
             else
              0
           end) item3,
       sum(t_num) total
  from test
 group by t_name;

Oracle 几种行转列的方式 sum+decode sum+case when pivot_oracle_03

方式三:

select t.*, (nvl(t.item1, 0) + nvl(t.item2, 0) + nvl(t.item3, 0)) as total
   from (select *
           from test pivot(sum(t_num) for t_item in('item1' as item1,
                                                    'item2' as item2,
                                                    'item3' as item3))) t;

Oracle 几种行转列的方式 sum+decode sum+case when pivot_数据库_04

unpivot的使用:

select t_name, t_item, t_num
 from (

    select *
      from test pivot(sum(t_num) for t_item in('item1' as item1,
                                               'item2' as item2,
                                               'item3' as item3))

 ) unpivot(t_num for t_item in(item1,item2,item3));

Oracle 几种行转列的方式 sum+decode sum+case when pivot_数据库_05

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月15日 0

暂无评论

推荐阅读
yqdtHKhvd9Ja