2017-01-10 23 views
0

我有一个使用钻取子报表的SSRS报表。 子报表在主报表中使用了3次,并且有几个参数。 在其中的2个子报表中,我设置了其中一个参数SexAtBirth,使用静态值,。 下面是参数的屏幕截图: enter image description here如何在SSRS子报表中设置一个静态列表中的参数

为第三子报表,我想参数SexAtBirth设置为Not Male or Female。在SQL中,它将是SexAtBirth NOT IN ('Female', 'Male')

参数SexAtBirth被设置为取多个值。
我不知道如何创建一个表达式来不包含静态值列表。

UPDATE 我试图创建值的静态列表,错误的是SexAtBirth parameter missing a value 我SQL Server 2008 R2上使用报表生成器3.0。 这是我曾尝试:在下拉列表中 :

"Female", "Male"

Female, Male

+0

我的理解是,只要你有一个带有多个值的参数,它就像你在IN()子句中使用的列表或数组一样。 SexAtBirth中是否只有男性,女性,无效或两者兼有?子报告运行的是什么查询?您可能能够在Where子句中使用Case。 – Kevin

+0

This is my ** where ** clause:'WHERE AgeRange = @AgeRange AND SexatBirth NOT IN(@SexAtBirth)'我想创建一个这样的字符串:'Female,Male' –

+0

当我在查询设计器中运行查询时,对于'SexAtBirth'参数,我可以输入'Female',它将只返回男性,并且输入'Male'只返回女性。但是我想创建一个'女性,男性'的列表,并让它只返回未知数。 –

回答

0

我已经在这里我用的是Active Directory来筛选报表(除了管理员)做了类似的事情。在这个例子中,@ UserID是来自浏览器会话的域用户名。

Where t.[Date] Between @DateFrom And @DateTo And 
(u.adsGuid = @UserID OR @UserID In (@UserAdmins)) 

但是,我基本上在SSRS中使用不同的参数来为另一个参数提供输入。这可能不是必要的。对于可读性和移动我的头从反逻辑走,我会尝试像下面:

WHERE AgeRange = @AgeRange AND 
    Coalesce(SexAtBirth, '') = Case @SexAtBirth 
     When 'Male' Then 'Female' 
     When 'Female' Then 'Male' 
     Else Coalesce(SexAtBirth, '') End 

这应该处理任何NULL值,并提供反向的结果。如果@SexAtBirth不是男性/女性,请给我们其余的。