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で従業員詳細レポートを作成したい

単純に示す

従業員から * を選択します。

ここでの要件は、ユーザーが自分のレコードと下位グレードの人々を表示できる必要があることです。

例: ジェーンがレポートを見た場合、彼女が見るレポートは 6 件すべて表示されます。

これはロールベースのセキュリティのケースであることがわかりましたが、これを実装する方法は?

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 に答える