Poiché sono colonne diverse, devi menzionarle esplicitamente separatamente nell'elenco SELECT. Non puoi farlo dinamicamente in puro SQL .
Suggerirei, utilizzando un buon editor di testo , non ci vorrebbe un minuto o due per scrivere l'intero SQL.
Potresti usare DECODE che avrà una sintassi in meno invece di CASE espressione prolissa.
Ad esempio,
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
Suggerirei di attenersi a SQL e non utilizzare PL/SQL . Non sono la stessa cosa, sono motori diversi. PL --> Procedural Language
.
Ma se insisti, allora potresti usare un cursore per loop per scorrere tutte le colonne in [DBA|ALL|USER]_TAB_COLS . Potresti usare un SYS_REFCURSOR per vedere i dati. Per prima cosa dovrai creare l'SQL dinamico .