SSRS报告向不同用户显示不同的记录。如何实现?

时间:2012-07-06 12:19:11

标签: sql-server reporting-services role-based

我最近遇到了一个要求,即“管理员应该看到所有记录但是员工只有适当的子集。我将用下面的例子解释我的要求。

我有一张桌子。

CREATE TABLE [dbo].[Empolyee](
    [EmpID] [int] NOT NULL,
    [Name] [nvarchar](50) NOT NULL,
    [Salary] [int] NULL,
    [Grade] [char](1) NULL
)   

和一些数据

insert into Empolyee values(1, 'John', 200, 'C')

insert into Empolyee values(2, 'Jim', 100, 'D')

insert into Empolyee values(3, 'Jane', 500, 'A')

insert into Empolyee values(4, 'Jack', 150, 'C')

insert into Empolyee values(5, 'Jil', 300, 'B')

insert into Empolyee values(6, 'Josh', 350, 'B')

A 是最高等级, D 最低。

我想在SSRS中提供员工详细报告

简单地显示

从Empolyee中选择*。

现在要求用户应该能够看到他/她的记录以及较低年级的人。

E.g。 如果简看到报告,她看到应该看到全部6。 如果杰克看到报告她看到应该只看到2(他和吉姆的)

我可以看到这是基于角色的安全性的情况,但如何实现这一点?

1 个答案:

答案 0 :(得分:2)

Select B.[Name] AS [Name2],B.[Salary] AS [Salary2],B.[Grade] AS [Grade2] 
from Empolyee A
Cross jOIN Empolyee B
WHERE A.Grade <= B.Grade
and A.Name like 'Jack' -- mention your user here
AND B.EmpID NOT IN (Select EmpID FROM Empolyee C 
 WHERE C.Grade = A.Grade and C.Name <> A.Name)