2009-05-21 77 views
2

我有一份需要顯示來自不同位置或所有位置的會計數據的報告。SSRS 2008查詢參數

Table_sales:

PartId Rev  LocId 
1   $10  1 
2   $2  1 
3   $5  2 

比方說查詢是這樣一些基本的東西來獲取所有收入:

SELECT SUM(rev) FROM Table_sales 

如果我希望能夠報告限制到特定的位置我會必須將其更改爲:

SELECT SUM(Rev) FROM Table_sales WHERE LocId = @param 

但是,如果我這樣做,我將如何獲得所有位置沒有有多個查詢?

僅供參考SQL 2008篩選器選項似乎不適用於我正在使用的實際查詢,因爲實際查詢使用按功能分組。

此外,SSRS 2008 DataSet查詢可以是表達式,但我似乎無法得到它的工作。

+0

你想「報告限制到特定的位置」,但你也想「讓所有的位置」。你能澄清明顯的意圖衝突嗎? – Andomar 2009-05-21 18:54:19

回答

3

我不知道的過濾器選項,或者您在SSRS 2008年提到的數據集查詢,但在某些舊版本的SSRS的,我見過像這樣的東西:

SELECT SUM(Rev) FROM Table_sales WHERE LocId = @param or 'All' = @param 

我可疑的是這是最有效的方法,但它允許你有1個查詢,你可以在其中選擇所有結果(通過傳遞'All'作爲參數)或者只是你想要的LocId(通過傳遞適當的LocId作爲參數)。

+5

這就是我們通常爲這種情況做的事情。你也可以做一些像WHERE LocId = COALESCE(@param,LocId)和傳遞null作爲'all'情況下的參數......但是我懷疑是否明顯更快/更高效。 – 2009-05-21 19:14:37

+0

COALESCE有趣的想法 - 以前我沒有想過。 – 2009-05-21 19:21:54

0

也許你可以使用:

SELECT SUM(Rev) FROM Table_sales WHERE LocId IN (@param)