SQL SSRS 将结果映射到矩阵
SQL SSRS Mapping Results to a Matrix
我有许多配置文件,这些配置文件具有一定级别的权限,这些配置文件被枚举并存储在 SQL 中。我想在 SSRS 中创建一个报告,该报告在 table 的左侧显示所有权限,在顶部显示所有配置文件,并带有 X 或具有适当权限的配置文件的一些指示。此信息存储在三个 table 中。
Table 1:配置文件 - 返回与 GUID
相关的配置文件的名称
Table 2: Profile_Priv - 给出具有权限编号的配置文件的 GUID(只有实际授予配置文件的权限才会出现在此 table)
Table 3:权限 - 将权限编号与权限名称相关联。
我有一个查询可以拉取分配给配置文件的权限,我可以轻松地用所有可能的权限填充空白矩阵,但是将两者结合起来让我很吃力。到目前为止,这是我在 SSRS 中所拥有的。我在 SSRS 中传递了一个名为 ProfileName 的参数,以允许查询显示该特定报告需要哪些配置文件。
Select Privileges.Description, Profiles.Name
FROM Privileges LEFT OUTER JOIN
Profile_Priv ON Privileges.ID = Profile_Priv.ID INNER JOIN
Profiles ON Profile_Priv.PID = Profiles.PID
WHERE (Profiles.Name = @ProfileName)
ORDER BY Privileges.ID
这不会像我预期的那样填充 table 中的任何信息,也不会进行任何类型的数据转换,例如将值变为是。
非常感谢任何反馈或帮助。
加法 1:
即使将其更改为完全加入,也仅执行单个配置文件 returns 特定配置文件具有的权限。
我要创建的是报告中的类似内容:
Profile 1 Profile 2 Profile 3 Profile 4
Permission 1 X X
Permission 2 X X X X
Permission 3 X X
Permission 4
目前,如果我正在搜索配置文件 2,我会使用上面的示例得到这个:
Profile 2
Permission 2 X
Permission 3 X
您可以执行完全外部联接,但不要使用 WHERE 子句,而是使用 CASE 语句 return 类似 "True"(如果配置文件具有该权限)或 "False" 如果没有。这样你总能获得所有权限。
我有许多配置文件,这些配置文件具有一定级别的权限,这些配置文件被枚举并存储在 SQL 中。我想在 SSRS 中创建一个报告,该报告在 table 的左侧显示所有权限,在顶部显示所有配置文件,并带有 X 或具有适当权限的配置文件的一些指示。此信息存储在三个 table 中。
Table 1:配置文件 - 返回与 GUID
相关的配置文件的名称Table 2: Profile_Priv - 给出具有权限编号的配置文件的 GUID(只有实际授予配置文件的权限才会出现在此 table)
Table 3:权限 - 将权限编号与权限名称相关联。
我有一个查询可以拉取分配给配置文件的权限,我可以轻松地用所有可能的权限填充空白矩阵,但是将两者结合起来让我很吃力。到目前为止,这是我在 SSRS 中所拥有的。我在 SSRS 中传递了一个名为 ProfileName 的参数,以允许查询显示该特定报告需要哪些配置文件。
Select Privileges.Description, Profiles.Name
FROM Privileges LEFT OUTER JOIN
Profile_Priv ON Privileges.ID = Profile_Priv.ID INNER JOIN
Profiles ON Profile_Priv.PID = Profiles.PID
WHERE (Profiles.Name = @ProfileName)
ORDER BY Privileges.ID
这不会像我预期的那样填充 table 中的任何信息,也不会进行任何类型的数据转换,例如将值变为是。
非常感谢任何反馈或帮助。
加法 1:
即使将其更改为完全加入,也仅执行单个配置文件 returns 特定配置文件具有的权限。
我要创建的是报告中的类似内容:
Profile 1 Profile 2 Profile 3 Profile 4
Permission 1 X X
Permission 2 X X X X
Permission 3 X X
Permission 4
目前,如果我正在搜索配置文件 2,我会使用上面的示例得到这个:
Profile 2
Permission 2 X
Permission 3 X
您可以执行完全外部联接,但不要使用 WHERE 子句,而是使用 CASE 语句 return 类似 "True"(如果配置文件具有该权限)或 "False" 如果没有。这样你总能获得所有权限。