在我的SSRS報告中,我已經有一個數據集A(通過運行SQL腳本),並且參數P1使用了A中的所有記錄。現在我想要A的子集,並使用另一個參數P2來引用它。創建一個數據集,它是SSRS中另一個數據集的子集
是否有可能在同一時間獲取數據集的整體和子集,並且只運行一次腳本?
我想創建一個共享數據集是一種可能的方式,但數據集A僅用於本地使用,不應共享。
在我的SSRS報告中,我已經有一個數據集A(通過運行SQL腳本),並且參數P1使用了A中的所有記錄。現在我想要A的子集,並使用另一個參數P2來引用它。創建一個數據集,它是SSRS中另一個數據集的子集
是否有可能在同一時間獲取數據集的整體和子集,並且只運行一次腳本?
我想創建一個共享數據集是一種可能的方式,但數據集A僅用於本地使用,不應共享。
簡短的回答
不,這是不可能的。
替代
您可以修改您的查詢,以便它返回填充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將運行即使正在從一個數據集填入兩個參數每個參數的查詢。
讓我知道這是否有幫助。
我已經實現這一點的一種方法是分組。如果數據集A已經擁有了所有您想要的內容,則可以將該數據集按照標準P2 = TRUE
分組。這將數據集A分成兩組 - 其中P2條件爲真,另一組P2條件爲假。
例如,考慮具有兩列的數據集,Label
和Amount
。我想將我的數據分組在Label = "LabelNameOne"
。我使用表達式=Fields!Label.Value = "LabelNameOne"
在我的數據集周圍創建了一個組,然後爲我自動創建一個子集。假設您希望它在運行時對用戶選擇的參數進行過濾,則只需在分組表達式中使用該參數:=Fields!Label.Value = Parameters!P2.Value
。
是的,這是一個替代方案,感謝您的想法,雖然我認爲它可能不比運行查詢兩次更好:(1.減慢查詢的執行時間2.返回冗餘記錄,因爲P2數據集是P1的子集,尤其是多列需要返回。 – BartMao