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

Pilih kolom yang sama untuk nilai yang berbeda pada kolom yang berbeda

Tidak diuji karena Anda tidak memberikan data pengujian (dari tabel AC_XXXX ):
(menggunakan klausa PIVOT Oracle 11)

select *
from   ( select emp_id, seq_nr, name
         from   ac_xxxx
         where  emp_id = '874830' )
pivot ( max(name) for seq_nr in (3 as seq3name, 4 as seq4name, 21 as seq21name,
                      22 as seq22name, 23 as seq23name, 24 as seq24name, 25 as seq25name)
      )
;

Untuk Oracle 10 atau sebelumnya, pivot dilakukan "dengan tangan", seperti ini:

select max(emp_id) as emp_id,               --  Corrected based on comment from OP
       max(case when seq_nr = 3 then name end) as seq3name,
       max(case when seq_nr = 4 then name end) as seq4name,
    --   etc. (similar expressions for the other seq_nr)
from   ac_xxxx
where  emp_id = '874830'
;

Atau, emp_id tidak perlu berada dalam max() jika kita menambahkan group by emp_id - yang kemudian akan berfungsi bahkan tanpa klausa WHERE, untuk pertanyaan yang berbeda namun terkait.




  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 Mengubah Format Tanggal di Sesi Oracle Anda

  2. Cara Mengembalikan Daftar Bahasa yang Didukung di Oracle

  3. Dapatkan BLOB dari Kolom BFILE di Oracle

  4. Waktu permintaan koneksi ODP.NET habis

  5. JUnit/HSQLDB:Cara mengatasi kesalahan dengan sintaks Oracle saat menguji menggunakan HSQLDB (tanpa hak istimewa dan/atau tanpa objek DUAL)