0

我最近遇到了一个要求,上面写着“经理应该查看所有记录,但只查看适当的子集。我将通过下面的示例解释我的要求。

我有一张桌子。

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 中进行员工详细报告

简单地展示

从员工中选择 *。

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

例如,如果 Jane 看到她看到的报告应该看到所有 6。如果 Jack 看到她看到的报告应该只看到 2(他和 Jim 的)

我可以看到这是基于角色的安全案例,但如何实现呢?

4

1 回答 1

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)
于 2012-07-06T12:49:33.047 回答