【发布时间】:2020-03-07 12:28:17
【问题描述】:
我有一个看起来像附件图片的数据库表
enter image description here 我需要对此进行查询并能够以以下格式显示输出 BookID, Genre1, Genre2, Genre3
我已经阅读了一些关于旋转/使用 MAX 功能的以前的帖子,但我仍在苦苦挣扎,我是新手。
【问题讨论】:
我有一个看起来像附件图片的数据库表
enter image description here 我需要对此进行查询并能够以以下格式显示输出 BookID, Genre1, Genre2, Genre3
我已经阅读了一些关于旋转/使用 MAX 功能的以前的帖子,但我仍在苦苦挣扎,我是新手。
【问题讨论】:
您可以使用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;
【讨论】: