Dado que son columnas diferentes, debe mencionarlas explícitamente por separado en la lista SELECCIONAR. No puede hacerlo dinámicamente en SQL puro .
Sugeriría usar un buen editor de texto , difícilmente tomaría uno o dos minutos escribir el SQL completo.
Podrías usar DECODE que tendrá menos sintaxis en lugar de CASE expresión detallada.
Por ejemplo,
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
Yo sugeriría apegarse a SQL y no usar PL/SQL . No son lo mismo, son diferentes motores. PL --> Procedural Language
.
Pero si insistes, podrías usar un cursor for loop para recorrer todas las columnas en [DBA|ALL|USER]_TAB_COLS . Podrías usar un SYS_REFCURSOR para ver los datos. Primero tendrás que construir el SQL dinámico .