Вы получаете выходные так просто, потому что вы выдаете select
заявления против таблицы (ваш tbl
стола), который предположительно содержит столбец (столбец первичного ключа, например), который однозначно идентифицирует строку и pivot
оператора принимает в значение рассмотрения этой колонки. Вот простой пример:
/*assume it's your table tbl */
with tbl(unique_col, col1, col2) as(
select 1, 'a', 'a1' from dual union all
select 2, 'b', 'b1' from dual union all
select 3, 'c', 'c1' from dual
)
Запрос против такой таблицы даст вам, что выходной (нежелательный выход) вы указали в вопросе:
select A,B
from tbl
pivot(
max(col2) for col1 in ('a' as A,'b' as B)
)
Результат:
A B
-- --
a1 null
null b1
Чтобы получить желаемый результат, необходимо исключить столбец с уникальным значением для строки:
select A
, B
from (select col1
, col2 /*selecting only those columns we are interested in*/
from tbl)
pivot(
max(col2) for col1 in ('a' as A,'b' as B)
)
Результат:
A B
-- --
a1 b1
ли значение в 'type' известного набора? –
Да, допустим, они просто a, b, c – cableload