2015-07-17 3 views
1

Я не нашел подходящих предыдущих ответов, поэтому разместил вопрос. Мне нужно преобразовать строки в столбцы. Все примеры PIVOT преобразуют строки в один столбец, тогда как мое требование - несколько столбцов. Моя таблица выглядит следующим образомПреобразование строк в столбцы oracle SQL

Type  ID 
test1 10 
test1 20 
test1 30 
test2 10 
test2 40 

Я хотел бы, чтобы это было

Type  ID  Type  ID 
test1  10  test2  10 
test1  20  test2  40 
test1  30 

Цените ваши предложения/входы!

ответ

1

Вы могли бы перечислить строки с row_number() и сделать pivot:

SQLFiddle demo

select * 
    from (
    select d.*, row_number() over(partition by type order by id) rn from data d) 
    pivot (max(type) type, max(id) id for type in ('test1' t1, 'test2' t2)) 
+0

Это сработало отлично, спасибо за y наша помощь! – Cindy

+0

Так что абсолютно не отмечайте его как принятый ответ! ;-) –

-1

Если столбец «ID» является основным ключом, вы можете иметь только один столбец в качестве основной клавиши в таблице.

+0

Het CB, я просто назвал его ID и нет его не PrimaryKey – Cindy

+0

нормально, вы можете создать четыре столбца, как это: Тип | ID | Тип_2 | _ID_2 или Тип_1 | ID_1 | Тип_2 | _ID_2 Затем выполнить миграцию данных – Hetdev