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

Oracle10g SQL pivot

Saya lebih suka menggunakan solusi GROUP BY dengan ekspresi CASE.

SELECT 
    id,
    MAX(CASE WHEN emailRank = 1 THEN email END) AS [1],
    MAX(CASE WHEN emailRank = 2 THEN email END) AS [2],
    MAX(CASE WHEN emailRank = 3 THEN email END) AS [3],
    MAX(CASE WHEN emailRank = 4 THEN email END) AS [4]
FROM (
    SELECT
        id, 
        email, 
        ROW_NUMBER() OVER (PARTITION BY id ORDER BY email) AS emailRank
    FROM TABLE
)
GROUP BY id;

Contoh Pivot asli memiliki tipe dan ")" hilang. Coba yang berikut ini agar pivot berfungsi:

pivot( max(email) FOR emailRank IN (1,2,3));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi Oracle REPLACE() tidak menangani carriage-returns &line-feeds

  2. Sintaks Gabung Luar Oracle Gaya Lama - Mengapa menempatkan tanda (+) di sisi kanan tanda sama dengan di Gabung Luar Kiri?

  3. Pengecualian ORA-08103:objek tidak lagi ada saat menggunakan setfetchsize dari Hibernate

  4. Kriteria Hibernasi untuk Tanggal

  5. Cara Menjalankan Fungsi di Oracle Dengan Parameter