0

我有许多具有特定级别的权限的配置文件,这些权限枚举并存储在SQL中。我想在SSRS内创建一个报告,其中显示了表格左侧的所有权限以及顶部的所有配置文件,并带有X或具有适当权限的配置文件的某些指示。这些信息存储在三个表中。将SQL SSRS映射结果映射到矩阵

表1:概况 - 给出了相关的回GUID

表2中的配置文件的名称:Profile_Priv - 提供与批准文号(其实只是授予个人资料权限的配置文件的GUID出现在此表)

表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 

的数据变换像转向价值是这不填充任何信息的表像我预料到,也不会做任何类型的。

任何反馈或协助,非常感谢。

加入1:

即使将其更改为一个完整的加入,做一个个人档案只返回权限,具体的配置文件了。

我寻找创造的是这样一份报告:

   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    
+0

您需要添加您当前正在获取的数据的示例,以及您希望它在报告中显示的方式。 –

+0

为了说明的目的添加了其他信息。 – CPickler

+0

您正在过滤**配置文件2 **,因此权限** 2 **和** 3 **是唯一预期的。如果您希望全部在Matrix中,则应删除WHERE子句,否则您的过滤器将只允许表中选定的配置文件。 –

回答

1

你可以完成一个完整的外连接,但不是使用WHERE子句,而是使用CASE语句来返回“True”(如果配置文件具有该权限)或“False”(如果没有)。这样你总是可以获得所有权限。

+0

案例陈述完美地解决了这个问题。谢谢。 – CPickler