【问题标题】:How to pivot results in SQL如何在 SQL 中透视结果
【发布时间】:2020-10-14 18:14:03
【问题描述】:

我有以下 SQL 表:

每个个人资料都有多个社交媒体帐户,我真的很想获取每个个人资料的 URL,有 5 个社交媒体平台,Facebook、Twitter、Instagram 等。 我知道我可以通过使用 5 个左连接来获得所需的结果,但我真正想要的是只创建一个连接然后旋转结果。所以我真正想要的是如何使用 PIVOT 来实现这一点。有人可以提供一个例子或告诉我如何用这样的图表来实现它。

我想返回一个包含 ID(个人资料)的结果,以及所有社交媒体平台作为单独的列及其对应的 URL

表格:

预期结果:

提前致谢

【问题讨论】:

  • 您使用的是哪个数据库?请添加标签。您是否查看过数据库的文档以获取数据透视示例?
  • @JK 。 . .请提供样本数据和期望的结果。
  • 您好,我已经更新了这个问题,我有,但是那里没有类似的东西,我的 SQL 知识处于初学者水平......
  • 请提供一些数据示例和预期输出。
  • @Chema 提供了一些数据和预期输出

标签: sql sql-server tsql group-by pivot


【解决方案1】:

你可以做条件聚合:

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

【讨论】:

  • 这种方法肯定会返回想要的结果,但我不认为它正在使用 PIVOT?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 2015-02-27
  • 2021-11-16
相关资源
最近更新 更多