Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Transpos keluaran kueri

Berikut adalah cara untuk melakukannya hanya dengan subkueri dan agregasi:

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;

Anda juga dapat menggunakan pivot , tapi itu adalah tambahan terbaru untuk Oracle SQL, jadi saya cenderung menggunakan metode ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cara menambahkan detik di stempel waktu oracle

  2. Gunakan alias tabel dalam kueri lain untuk melintasi pohon

  3. Performa buruk mendapatkan bidang gumpalan dari Oracle di .Net

  4. SQL -- Mengisi Tanggal yang tidak ada hasilnya

  5. ORA-00838