Тъй като те са различни колони, трябва изрично да ги посочите отделно в списъка ИЗБОР. Не можете да го направите динамично в чист SQL .
Предлагам да използвате добър текстови редактор , едва ли ще отнеме минута или две, за да напишете целия SQL.
Можете да използвате DECODE което ще има малко по-малко синтаксис вместо CASE израз, който е многословен.
Например,
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
Предлагам да се придържате към SQL , а не да използвате PL/SQL . Не са еднакви, различни двигатели са. PL --> Procedural Language
.
Но ако настоявате, можете да използвате цикъл на курсора за за преминаване през всички колони в [DBA|ALL|USER]_TAB_COLS . Можете да използвате SYS_REFCURSOR за да видите данните. Първо ще трябва да създадете динамичния SQL .