Eftersom de är olika kolumner måste du uttryckligen nämna dem separat i SELECT-listan. Du kan inte göra det dynamiskt i ren SQL .
Jag skulle föreslå att du använder en bra textredigerare , skulle det knappast ta en minut eller två att skriva hela SQL.
Du kan använda DECODE som kommer att ha lite mindre syntax istället för CASE uttryck som är utförligt.
Till exempel,
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
Jag skulle föreslå att du håller dig till SQL och inte använda PL/SQL . De är inte lika, de är olika motorer. PL --> Procedural Language
.
Men om du insisterar kan du använda en markör för loop för att gå igenom alla kolumner i [DBA|ALL|USER]_TAB_COLS . Du kan använda en SYS_REFCURSOR för att se data. Först måste du bygga den dynamiska SQL .