Avere UNPIVOT afferrare automaticamente elenco di colonne (Oracle 11g)
Domanda
Questo è un follow-up domanda per Transpose una riga in più righe Oracle
Voglio essere in grado di UNPIVOT un risultato della query arbitrarie.
Per UNPIVOT una tabella manualmente, vorrei fare:
select value_type, value from (
(
-- query to be unpivoted
-- EG: select col1, col2, col3, col4, col5 from table
)
unpivot
(
-- Line I would like to change
value for value_type in (col1, col2, col3, col4, col5)
)
);
Questo funziona per tutte le query che restituiscono 5 colonne, chiamato col1, col2
, ecc C'è qualcosa ho messo in posto di value for value_type in (col1, col2, col3, col4, col5)
che catturerà tutti i nomi delle colonne dalla query / vista / tabella che viene selezionato nella prima parte?
Soluzione
Si potrebbe creare una stored procedure per fare questo in PL / SQL creando dinamicamente l'istruzione SQL come una stringa di quindi utilizzando execute immediate
per eseguirlo e restituire un cursore.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow