Karena mereka adalah kolom yang berbeda, Anda harus secara eksplisit menyebutkannya secara terpisah dalam daftar SELECT. Anda tidak dapat melakukannya secara dinamis dalam SQL pure murni .
Saya akan menyarankan, menggunakan editor teks yang bagus , hampir tidak perlu satu atau dua menit untuk menulis seluruh SQL.
Anda dapat menggunakan DECODE yang akan memiliki sintaks yang lebih sedikit daripada CASE ekspresi yang verbose.
Misalnya,
DECODE(ONE, 1, 1, 0) AS col1,
DECODE(JUST_ONE, 1, 1, 0) AS col2,
DECODE(ANOTHER_ONE, 1, 1, 0) AS col3,
DECODE(TWO, 1, 1, 0) AS col4,
DECODE(JUST_TWO, 1, 1, 0) AS col5,
DECODE(ANOTHER_TWO, 1, 1, 0) as col6
Saya akan menyarankan untuk tetap menggunakan SQL , dan tidak menggunakan PL/SQL . Mereka tidak sama, mereka adalah mesin yang berbeda. PL --> Procedural Language
.
Tetapi jika Anda bersikeras, maka Anda bisa menggunakan kursor untuk loop untuk mengulang semua kolom di [DBA|ALL|USER]_TAB_COLS . Anda dapat menggunakan SYS_REFCURSOR untuk melihat datanya. Pertama, Anda harus membangun SQL dinamis .