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

Oracle mengembalikan alias yang sama untuk kasus yang berbeda pada pilih

Dengan asumsi subquery Anda sudah mendapatkan nilai yang benar kembali, dan Anda hanya bertanya bagaimana cara mendapatkan kedua nilai 'artikel' di kolom yang sama, yang perlu Anda lakukan hanyalah memindahkan subquery ke when kedua periksa dalam case pertama ekspresi, alih-alih sebagai kolomnya sendiri:

SELECT
     tbl.parent,
     list.list_value,
     tbl.values_column,
     CASE
         WHEN list.list_value = 'Article' THEN tbl.values_column
         WHEN list.list_value = 'Paragraph' THEN (
             SELECT
                 values_column
             FROM
                 pro_table
             WHERE
                 pro_table.id_pro_table = tbl.parent
         )
     END AS article,
     CASE
         WHEN list.list_value = 'Paragraph' THEN tbl.values_column
     END AS paragraph
 FROM
     pro_table tbl 
     LEFT JOIN list ON list.id_list = tbl.id_t_list

Anda dapat mengganti subquery dengan join kiri kembali ke tabel yang sama dan menggabungkan hasilnya:

SELECT
     tbl.parent,
     list.list_value,
     tbl.values_column,
     COALESCE (
         CASE
             WHEN list.list_value = 'Article' THEN tbl.values_column
         END,
         tbl2.values_column
     ) AS article,
     CASE
         WHEN list.list_value = 'Paragraph' THEN tbl.values_column
     END AS paragraph
 FROM
     pro_table tbl 
     LEFT JOIN list ON list.id_list = tbl.id_t_list
     LEFT JOIN pro_table tbl2 ON tbl2.id_pro_table = tbl.parent

... tapi itu membuat beberapa asumsi tentang hierarki, jadi Anda mungkin perlu mengencangkan gabungan berdasarkan jenis daftar.

db<>biola dengan hubungan yang ditemukan antara enam baris yang sama yang Anda tunjukkan, karena kami tidak memiliki ID yang sebenarnya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memetakan properti Boolean ke Oracle menggunakan Entity Framework

  2. Menggunakan pernyataan Gabung untuk tabel tunggal

  3. Masalah mengubah tanggal dengan pemicu di oracle

  4. Cara Memasukkan String Panjang ke Tipe Data CLOB di Oracle

  5. Oracle JDBC DriverManager.getConnection() hang