用于SSRS的多对多关系的SQL数据透视表

big*_*mac 5 sql-server pivot-table reporting-services

使用SQL Server 2008,我试图弄清楚如何创建一个返回带有标准多对多关系的数据透视表的查询.此关系定义哪些用户属于哪些角色,我希望该表列出侧面的用户名和顶部的角色名称.最终目标是在SQL Server Reporting Services中使用此输出,因此SQL Server是否生成透视结果无关紧要,或者SSRS是否生成结果(一种方法比另一种更好?).这是我的示例架构:

用户表:

  • 用户身份
  • 用户名

权利表:

  • RightID
  • RightName

RightsMembership表:

  • 用户身份
  • RightID

我希望以下输出作为SSRS中的报告.任何帮助表示赞赏.

       RightOne   RightTwo   RightThree   RightFour
jdoe       X          X
mjane      X                       X
ssmith                X            X           X
Run Code Online (Sandbox Code Playgroud)

仅供参考:可以添加角色,因此我不希望在查询中对角色名称或计数进行硬编码.

M.C*_*ith 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
Run Code Online (Sandbox Code Playgroud)

将此查询用作存储过程或查询以及按顺序排序和

创建数据集和数据源

在报告中插入矩阵

在行中选择UserName字段从Created Dataset在列中从创建的数据集中选择RightName字段在Data using this expression下面,您将获得所需的输出= IIF(Fields!UserName.Value = nothing,nothing," X")作为矩阵中的数据