2016-06-29 6 views
1

私は、3つのパラメータ、2つの必須パラメータ、3つ目は検索パラメータで、空白/ NULL値も許可するSSRSレポートを作成しました。私は上記の3つを通過した後、SQL Serverでこのクエリを実行今SSRSデータセットで動的クエリを渡すことはできますか?

IF (@Parameter3 = '') 
BEGIN 
EXEC('SELECT * FROM [TblName] with(nolock) 
where [Col1] in ('[email protected]+') and [Col2] in ('[email protected]+') 
') 
END 
ELSE 
BEGIN 
EXEC ('SELECT * FROM [TblName] with(nolock) 
where [Col1] in ('[email protected]+') and [Col2] in ('[email protected]+') and [Col3] ('[email protected]+') 
') 
END 

: 私は、クエリの下に使用していますその検索パラメータ

1.) Display records without passing value in Third parameter i.e. NULL value. 
2.) Display records by passing single value in Third parameter. 
3.) Display records by passing multiple values in Third parameter. 

のための3つの状況を処理するために動的にクエリを行っていますさまざまな状況が渡されたパラメータに基づいて結果を返しますが、これをレポートデータセットに追加しようとするとエラーが発生します。enter image description here SSRSのデータセットに動的クエリを追加できますか?

+0

答えは「はい」ですが、実際にはうまくいかない理由を尋ねています。ヘルプが必要な場合は、動作していないSQLクエリ、取得したエラー(エラーを引き起こすために渡されたパラメータを含む)、エラーが発生した条件、およびおそらくパラメータページのスクリーンショットを提供する必要があります。 – BIDeveloper

+0

私はこのクエリを使用しています:IF(パラメータ3 @ = '') EXEC(BEGIN '[TblName])NOLOCK(と ここで、[のCol1])' +パラメータ1 @ + '(中と[Col2に] SELECT * FROM を( '+ @パラメータ2 +') の[ 【のCol1]で( '+ @パラメータ1 +')とcol2 'を((NOLOCKと[TblName] FROM * 選択)ELSE) END は EXECをBEGIN' ] + 'Parameter2 +') ' ' END – user2728106

+0

あなたの元の質問を編集することはできますか:あなたはSQを提供する必要がありますか? Lクエリ、エラー(エラーを引き起こすために渡されたパラメータを含む)、エラーが発生した条件、およびおそらくパラメータページのスクリーンショットを取得します。 – BIDeveloper

答えて

0

Col3の後にSQLにIN句がありません。

IF (@Parameter3 = '') 
BEGIN 
    EXEC('SELECT * FROM [TblName] WITH (NOLOCK) 
    where [Col1] in ('[email protected]+') and [Col2] in ('[email protected]+') 
    ') 
END 
ELSE 
BEGIN 
    EXEC ('SELECT * FROM [TblName] WITH (NOLOCK) 
    where [Col1] in ('[email protected]+') and [Col2] in ('[email protected]+') and [Col3] in ('[email protected]+') 
    ') 
END 

パラメータのデータ型について知らなくても、これは機能するはずです。パラメータで複数の値が選択されている場合は、これが問題になることが予想されます。

私はSQLが動的である必要があるとは確信していません。下記のコードはまあまあです。

IF (@Parameter3 = '') 
BEGIN 
    SELECT * FROM [TblName] WITH (NOLOCK) 
    WHERE [Col1] IN (@Parameter1) 
    AND [Col2] IN (@Parameter2) 
END 
ELSE 
BEGIN 
    SELECT * FROM [TblName] WITH (NOLOCK) 
    WHERE [Col1] IN (@Parameter1) 
    AND [Col2] IN (@Parameter2) 
    AND [Col3] IN (@Parameter3) 
END 

幸運!

+0

上記のコードは、 '@param3'にNULL/BLANK値を渡したときと' @parat3'で単一の値が渡されたときに動作しますが、 '@param3'で複数の値が渡されたときにエラーをスローします。したがって、NULL/BLANK値も許可する複数の値をこのパラメータに渡すことは可能ですか? – user2728106

+0

2番目のクエリは、動的クエリよりも複数の値を処理する必要があります。動的SQLを使用している場合、このようなものを使用して '@ parameter3'の値を分割する必要があります。 - > http://stackoverflow.com/questions/36378884/ssrs-2008-report-not-working-with-ストアドプロシージャ/ 36390454#36390454を使用します。このスプリッターUDFは、あなたのような非ストアード・プロシージャー・ソリューションにも適用できます。 –

関連する問題