使用SQL Server 2008,我试图弄清楚如何创建一个返回带有标准多对多关系的数据透视表的查询。此关系定义哪些用户属于哪些角色,我希望该表列出侧面的用户名和顶部的角色名称。最终目标是在SQL Server Reporting Services中使用此输出,因此,如果SQL Server生成透视结果,或SSRS生成结果(一种方法比另一种方法更好?)并不重要。这是我的示例模式:
用户表:
权利表:
RightsMembership 表:
我希望将以下输出作为SSRS中的报告。任何帮助表示赞赏。
RightOne RightTwo RightThree RightFour
jdoe X X
mjane X X
ssmith X X X
仅供参考:可以添加角色,因此我不希望在查询中对角色名称或计数进行硬编码。
答案 0 :(得分:5)
我不了解数据透视表,但您可以在SSRS中实现此目的,如下所示
Select UserName,
RightName
From users u INNER JOIN RightMembership rm on rm.UserID = u.UserID
INNER JOIN Rights r on rm.RightID = r.RightID
将此查询用作存储过程或查询以及相应的订单和
创建数据集和数据源
在报告中插入矩阵
在行中,从“创建的数据集”中选择“用户名”字段 在列中,从创建的数据集中选择RightName字段 在数据中使用下面的表达式,您将获得所需的输出 = IIF(Fields!UserName.Value = nothing,nothing,“X”)作为矩阵中的数据