2017-01-10 25 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不是男性/女性,請給我們其餘的。