1

where句の1行を除いて、すべて同じクエリを使用する7つのレポートがあります。これらを 1 つのレポートに結合し、選択したレポート タイプに基づいて行を変更するにはどうすればよいですか。

コード例 備考 a から a.remark を選択 a.code in (:rpt_parm)

:rpt_parm には 7 つのオプションがありますが、値に入力した値のリストを受け入れるクエリや、リストを返すデータセットを使用するクエリを取得できないようです。

VS2015 と Oracle データベース接続で SSRS 2016 を使用していることに注意してください。

4

4 に答える 4

0

質問を正しく理解できているかどうかわかりませんが、試してみます。

helper2つの列を持つテーブルを持つことができるoptionと思いますvalue. 各オプションには、そのオプションの値と同じ数の行があります。(したがって、値が複数回表示される場合があります。その値を使用するオプションの数だけです。)

次に、オプション番号のみを入力します:option。クエリは次のようになります。

... where a.code in (select value from helper where option = :option)

パフォーマンスが問題になる場合は、 にインデックスを付けることができますoption。これは、コンマ区切りの文字列に基づくどのソリューションよりもうまく機能するはずです。

于 2016-12-13T00:56:47.213 に答える
0

リストとは、コンマ区切りのリストを意味すると思いますか?

SSRS レポートからこれを行う最善の方法は、パラメーター リストをストアド プロシージャに渡すことです。単一の値の文字列として受け入れられます。ストアド プロシージャ内で、文字列を文字列のテーブルに分割し、そのテーブルを使用して、文字列値フィールドに基づいて残りのクエリに結合する必要があります。

于 2016-12-12T20:44:38.980 に答える
0

クエリを変更して、次のようなレポート タイプを単純に受け入れることができます (MS-SQL...申し訳ありませんが、Oracle インスタンスが起動していません)。

declare @report_type int;
select  *
from    remarks a
where   (@report_type = 'POU Remarks' and a.remarks in ('P100', 'P105', 'P0110'))
or      (@report_type = 'POD Remarks' and a.remarks in ('P200', 'P205', 'P210'))
or      ...;
于 2016-12-12T22:14:50.237 に答える