Oracle
 sql >> база данни >  >> RDS >> Oracle

Транспониране на изход от заявка

Ето начин да направите това само с подзаявки и агрегиране:

select name,
       sum(case when fy = 2014 then x end) as "2014",
       sum(case when fy = 2015 then x end) as "2015",
       sum(case when fy = 2016 then x end) as "2016"
from (select fy,
             (case when n.n = 1 then 'x1'
                   when n.n = 2 then 'x2'
                   when n.n = 3 then 'x3'
                   when n.n = 4 then 'x4'
              end) as name,
             (case when n.n = 1 then x1
                   when n.n = 2 then x2
                   when n.n = 3 then x3
                   when n.n = 4 then x4
              end) as x
      from temp_table cross join
            (select 1 as n from dual union all
             select 2 from dual union all
             select 3 from dual union all
             select 4 from dual
            ) n
     ) t
group by name;

Можете също да използвате pivot , но това е съвсем скорошно допълнение към Oracle SQL, така че съм склонен да използвам този метод.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка в Oracle 11.1, преобразуваща номера на юлианския ден в ДАТА или TIMESTAMP

  2. Топ 2 оферти със сбор от всички оферти

  3. Редактирайте контролния файл в Oracle 10g Release 2

  4. Какъв е алгоритъмът, използван от функцията ORA_HASH?

  5. Използване на таблична функция в OBIEE RPD (физически слой) и предаване на параметър от подканата на таблото към нея