2010-02-26 2 views
2

Это прослеживание вопрос Transpose one row into many rows OracleHave UNPIVOT автоматически захватить список столбцов (Oracle 11g)

Я хочу, чтобы иметь возможность UNPIVOT произвольный результат запроса.

Чтобы UNPIVOT таблицы вручную, я хотел бы сделать:

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) 
) 
); 

Это работает для всех запросов, которые возвращают 5 столбцов, называется col1, col2 и т.д. Есть ли что-то я вставил вместо value for value_type in (col1, col2, col3, col4, col5), что будет захватывать все имена столбцов из таблицы query/view/table, выбранной в первой части?

ответ

2

Вы можете создать хранимую процедуру, чтобы сделать это в PL/SQL, динамически создавая инструкцию SQL в виде строки a, а затем используя execute immediate для ее выполнения и возврата курсора.

+1

Детальный ответ с кодом: http://stackoverflow.com/questions/15100101/unpivot-on-an-indeterminate-number-of-columns – Vadzim

Смежные вопросы