【问题标题】:Pivot rows to columns in SQL Server 2014在 SQL Server 2014 中将行数据透视到列
【发布时间】:2017-08-29 01:41:26
【问题描述】:

我在下面的链接中有 3 个类似图片的表格:

https://drive.google.com/file/d/0B0P-s1mtoHkaY2hJUEJuTnZOYTQ/view

我可以显示上面的结果吗?

我在 Google 上进行了研究,发现它是通过在 SQL 中使用 pivot 获得的。但我无法得到它。 我们将不胜感激。

提前致谢。

【问题讨论】:

  • 你是对的,你需要一个数据透视查询。你试过了吗?
  • 除了 Stack Overflow imgur 之外,请不要在任何地方发布图片(在撰写帖子时可以使用图片工具栏按钮访问)。为您的内容使用其他位置意味着未来的读者在这里不一定可以使用它,并且由于您的大部分内容都包含在其中,如果它不可用,那么您的帖子就没有价值,也不应该在这里。见How to Ask

标签: pivot sql-server-2014


【解决方案1】:

您可以尝试通过联结表将用户表和角色表连接在一起,然后旋转以将每个角色作为单独的列:

SELECT
    u.Id AS UserID,
    u.UserName,
    MAX(CASE WHEN r.Name = 'Admin'    THEN 'TRUE' ELSE 'FALSE' END) AS Admin,
    MAX(CASE WHEN r.Name = 'Manager'  THEN 'TRUE' ELSE 'FALSE' END) AS Manager,
    MAX(CASE WHEN r.Name = 'Employer' THEN 'TRUE' ELSE 'FALSE' END) AS Employer
FROM Users u
LEFT JOIN UserRole ur
    ON u.Id = ur.UserID
LEFT JOIN Role r
    ON ur.RoleID = r.Id
GROUP BY
    u.ID,
    u.UserName
ORDER BY
    u.Id

输出:

演示在这里:

Rextester

【讨论】:

  • 感谢您的帮助。它对我有用。但如果是这样,当我添加新角色时,它就无法动态显示。你能改进它吗?
  • @NvPeter 如果您询问如何在数据集中为新角色添加新列,如果您想自动执行此操作,则需要动态 SQL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多