2009-05-21 16 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

答えて

3

私はフィルタオプションまたはあなたはSSRS 2008で述べたデータセットのクエリについてはよく分からないんだけど、SSRSの古いバージョンの一部では、私はこのようなものを見てきました:

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

私はこれを行う最も効率的な方法だとは疑いがありますが、すべての結果(「All」という用語をパラメータとして渡す)または必要なLocIdだけを選択することができるクエリを1つ持つことができます(適切なLocIdパラメータとして)。

+5

これは、このような場合に通常行うことです。また、WHERE LocId = COALESCE(@param、LocId)のような処理を行い、 'すべての'ケースのパラメータとしてnullを渡すこともできますが、いずれかどちらかが速く/より効率的です。 –

+0

COALESCEに関する興味深いアイデア。 –

+0

ありがとう、両方の方法が動作し、良いアイデアです。 – MaxGeek

0

たぶん、あなたはそれを使用することができます。

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

私はそれらをすべて手に入れたいというケースを扱っていますか?私はnullパラメータまたは特定の文字列、 'All'または何かのように渡すように。 – MaxGeek