Oracle SQL: как объединить n строк и создать дополнительные столбцы в результате? - PullRequest
0 голосов
/ 05 февраля 2019

Таблица:

id race
1  elf
1  troll
2  lizard
2  elf
2  human    
3  dwarf

Я ищу запрос, который выводит это:

id race1   race2   race3
1  elf     troll   
2  lizard  elf     human
3  dwarf

Может быть n гонок или заданное максимальное количество гонок, если это проще

Возможно ли это с помощью запроса sql (не pl / sql)?(оракул, если нужна специальная функция)

1 Ответ

0 голосов
/ 05 февраля 2019

Вы можете использовать условное агрегирование, если хотите сделать это простым select:

select id,
       max(case when seqnum = 1 then race end) as race_1,
       max(case when seqnum = 2 then race end) as race_2,
       max(case when seqnum = 3 then race end) as race_3,
       max(case when seqnum = 4 then race end) as race_4,
       max(case when seqnum = 5 then race end) as race_5
from (select t.*,
             row_number() over (partition by id order by id) as seqnum
      from t
     ) t
group by id;
...