Есть ли способ для меня, чтобы превратить эти строки в столбцы в oracle? - PullRequest
0 голосов
/ 07 марта 2020

У меня есть таблица базы данных, которая выглядит как прикрепленное изображение

введите описание изображения здесь Мне нужно запросить это и я могу показать вывод в формате BookID, Genre1, Genre2 , Genre3

Я читал несколько предыдущих постов о повороте / использовании функции MAX, но я все еще борюсь, я новичок в этом.

1 Ответ

0 голосов
/ 07 марта 2020

Можно использовать row_number() и условное агрегирование:

select bookId,
       max(case when seqnum = 1 then genre end) as genre_1,
       max(case when seqnum = 2 then genre end) as genre_2,
       max(case when seqnum = 3 then genre end) as genre_3
from (select bg.*, 
             row_number() over (partition by bookId order by genre) as seqnum
      from bookGenres
     ) bg
group by bookId;
...