如何在sql中透视结果

bbuxkriu  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(271)

我有以下sql表:

每个配置文件都有多个社交媒体帐户,我真的很有兴趣获得每个配置文件的URL,有5个社交媒体平台,facebook,twitter,instagram等。我知道我可以通过使用5个左连接得到想要的结果,但我真正想要的是只创建一个连接,然后旋转结果。所以我真正想要的是如何使用pivot来实现这一点。有没有人能提供一个例子,或者告诉我如何用这样的图来实现它。
我想得到一个由id(profile)和所有社交媒体平台组成的结果,作为单独的列,并带有相应的url
表格:



预期结果:

提前谢谢

yqlxgs2m

yqlxgs2m1#

您可以执行条件聚合:

select
    p.id,
    p.long_description,
    max(case when m.name = 'Facebook'   then pm.url end)  url_facebook,
    max(case when m.name = 'Twitter'    then pm.url end)  url_twitter,
    max(case when m.name = 'Instragram' then pm.url end)  url_instragram
from profile p
inner join profile_social_media pm on pm.profile_id = p.id
inner join social_media_platform m on m.id = pm.social_media_platform_id
group by p.id, p.long_description

相关问题