Oracle SQL pivot query

前端 未结 2 1712
面向向阳花
面向向阳花 2020-11-22 04:10

I have data in a table as seen below:

MONTH VALUE

1     100
2     200
3     300
4     400
5     500
6     600

I want to write a SQL query

2条回答
  •  独厮守ぢ
    2020-11-22 04:43

    Oracle 11g and above

    As of Oracle 11g, you can now use the PIVOT operator to achieve that result:

    create table tq84_pivot (
      month number,
      value number
    );
    
    insert into tq84_pivot values(1, 100);
    insert into tq84_pivot values(2, 200);
    insert into tq84_pivot values(3, 300);
    insert into tq84_pivot values(4, 400);
    insert into tq84_pivot values(5, 500);
    insert into tq84_pivot values(6, 600);
    --
    insert into tq84_pivot values(1, 400);
    insert into tq84_pivot values(2, 350);
    insert into tq84_pivot values(4, 150);
    
    select 
      *
    from
      tq84_pivot
    pivot (
       sum (value) as sum_value for
         (month) in (1 as month_jan,
                     2 as month_feb,
                     3 as month_mar,
                     4 as month_apr,
                     5 as month_mai,
                     6 as month_jun,
                     7 as month_jul,
                     8 as month_aug,
                     9 as month_sep,
                    10 as month_oct,
                    11 as month_nov,
                    12 as month_dec)
    );
    

提交回复
热议问题