Транспонировать результат SQL, который извлекает имена столбцов и тип данных - PullRequest
1 голос
/ 09 июля 2019

Я использую Oracle SQL Developer.Я хочу запустить SQL-запрос, который извлекает значения column_name, data_type и nullable из определенной таблицы.Я могу сделать это, запустив следующий код:

select column_name, data_type, nullable
from all_tab_columns
where table_name = 'mytable'
order by column_id asc

Это приводит к следующим результатам:

Column_Name | Data_Type | Nullable
-----------------------------------
Column 1    | VARCHAR2  | N
Column 2    | NUMBER    | Y
Column 3    | DATE      | N

Чтобы сделать эту информацию полезной для меня, мне нужно транспонировать эти данныетак что column_name это все одна строка (сейчас это все один столбец) и соответствующие ему данные под ним.Это должно выглядеть примерно так.

Column 1 | Column 2 | Column 3
------------------------------
VARCHAR2 | NUMBER   | DATE
N        | Y        | N

Кто-нибудь знает лучший способ сделать это?В Teradata это было так же просто, как выполнить команду case, но в Oracle это не похоже на случай (каламбур).Любая помощь приветствуется!

1 Ответ

0 голосов
/ 09 июля 2019

Один метод - использовать listagg(), чтобы поместить все в один строковый столбец:

select listagg(column_name || ',' || data_type || ',' || nullable, ';') within group (order by column_id asc)
from all_tab_columns
where table_name = 'mytable'
...