Sql server SSRS:仅为当前登录的用户提取报告

Sql server SSRS:仅为当前登录的用户提取报告,sql-server,reporting-services,Sql Server,Reporting Services,我需要能够根据谁登录的情况提取报告。例如,在一组销售人员中,如果Bob进入此报告并单击“销售人员”下拉列表,我需要他只能将Bob视为可用的销售人员,而不是其他任何人。我使用=User解决了这个问题!UserID在SSRS中起作用,它工作得很好 我现在遇到的问题是,为这个功能提供一个CASE语句,以允许管理者能够进入“Admin”视图,查看Bob以及其他人。我当前的查询如下所示,仅用于从Salesperson下拉列表中选择该用户名: select SalesPerson_Name from Sal

我需要能够根据谁登录的情况提取报告。例如,在一组销售人员中,如果Bob进入此报告并单击“销售人员”下拉列表,我需要他只能将Bob视为可用的销售人员,而不是其他任何人。我使用
=User解决了这个问题!UserID
在SSRS中起作用,它工作得很好

我现在遇到的问题是,为这个功能提供一个CASE语句,以允许管理者能够进入“Admin”视图,查看Bob以及其他人。我当前的查询如下所示,仅用于从Salesperson下拉列表中选择该用户名:

select SalesPerson_Name
from Salesperson
where salesperson_id =  SUBSTRING(@user,14,20) 

下面是我试图用来覆盖并为管理员级别提供“All”类型视图的内容:

select Salesperson_name
from Salesperson
where case
    when @user in ('DOMAIN\Brandyj','DOMAIN\jwilson') then 1=1
    else SalesPerson_id = SUBSTRING(@user,14,20)
    end 
它不喜欢我想做的事,给了我一个机会

“=”附近的语法不正确


也许我看这个太久了。有人能发现一些明显的东西吗?

你很接近。。。只是一个小小的改变。您需要在SalesPerson\u id列的操作数上计算
CASE
表达式<代码>案例在尝试使用时不提供逻辑流。记住,它计算一组布尔表达式以确定结果(必须是单个数据类型)

我也选择了
,但如果您愿意,您仍然可以在中使用

select Salesperson_name
from Salesperson
where 
    SalesPerson_id  = 
        case
            when @user = 'DOMAIN\Brandyj' or @user = 'DOMAIN\jwilson' then SalesPerson_id  
            else SUBSTRING(@user,14,20)
         end 
facepalm我真的认为在这种情况下我是对的。我将该案例视为一个开关,因此从功能上来说,查询将作为WHERE…@USER IN。。。或者在哪里…销售人员\u ID=。。。我希望这是有道理的。很明显,我错了,所以我会重温这一点并从中吸取教训。非常感谢。