2017-08-29 136 views
0

我有3和表像的图像在下面的链接:枢轴排在SQL Server列2014

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

我可以显示结果如上一个?

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

在此先感谢。

+0

你是对的,你需要一个数据透视查询。你尝试过什么吗? –

+0

请勿在堆栈溢出imgur之外的任何地方发布图像(在编写帖子时可以使用图像工具栏按钮访问)。对您的内容使用其他位置意味着未来的读者可能无法使用这些内容,并且由于绝大多数内容都包含在其中,因此如果该内容不可用,那么您的帖子就没有价值,并且不应该在这里。见[问]。 –

回答

2

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

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 

输出:

enter image description here

此处演示:

Rextester

+0

感谢您的帮助。这对我很有用。但是,如果是这样,当我添加新的角色,那么它不能动态显示。你能改善它吗? –

+0

@NvPeter如果您正在询问如何为数据集中的新角色添加新列,如果您想自动执行此操作,则需要动态SQL。 –