2016-03-25 142 views
3

在我的SSRS報告中,我已經有一個數據集A(通過運行SQL腳本),並且參數P1使用了A中的所有記錄。現在我想要A的子集,並使用另一個參數P2來引用它。創建一個數據集,它是SSRS中另一個數據集的子集

是否有可能在同一時間獲取數據集的整體和子集,並且只運行一次腳本?

我想創建一個共享數據集是一種可能的方式,但數據集A僅用於本地使用,不應共享。

回答

2

簡短的回答

不,這是不可能的。

替代

您可以修改您的查詢,以便它返回填充P1參數和其他列填充P2一列。例如:

select 'Foo' P1, 'Foo' P2 
union all 
select 'Bar', 'Bar' 
union all 
select 'Foobar', null 

返回:

P1  P2 
Foo  Foo 
Bar  Bar 
Foobar null 

使用P1用於填入P2參數列填充P1參數和P2

注子集列(P2在我的情況)具有比P1, 以下的值,如果你的參數設置爲允許NULL值,它會顯示在選擇列表中的NULL 選項,否則它不會。

該解決方案可以爲你工作,但如果你需要數據集只運行一次,我不能確定的是,我認爲SSRS將運行即使正在從一個數據集填入兩個參數每個參數的查詢。

讓我知道這是否有幫助。

+0

是的,這是一個替代方案,感謝您的想法,雖然我認爲它可能不比運行查詢兩次更好:(1.減慢查詢的執行時間2.返回冗餘記錄,因爲P2數據集是P1的子集,尤其是多列需要返回。 – BartMao

0

我已經實現這一點的一種方法是分組。如果數據集A已經擁有了所有您想要的內容,則可以將該數據集按照標準P2 = TRUE分組。這將數據集A分成兩組 - 其中P2條件爲真,另一組P2條件爲假。

例如,考慮具有兩列的數據集,LabelAmount。我想將我的數據分組在Label = "LabelNameOne"。我使用表達式=Fields!Label.Value = "LabelNameOne"在我的數據集周圍創建了一個組,然後爲我自動創建一個子集。假設您希望它在運行時對用戶選擇的參數進行過濾,則只需在分組表達式中使用該參數:=Fields!Label.Value = Parameters!P2.Value

相關問題