0

私はこのwhere句を持っています:

WHERE p.ROLE = 'doctor'
AND((p6.PA_Name='Event_Day_From' AND p6.PA_Value>= SUBSTRING('01.01.2012', 1, 2))
AND (p7.PA_Name='Event_Month_From' AND p7.PA_Value>=SUBSTRING('01.01.2012', 4, 2))
AND (p8.PA_Name='Event_Year_From' AND P8.PA_Value>=SUBSTRING('01.01.2012', 7, 4)))
AND ((p9.PA_Name='Event_Day_To' AND P9.PA_Value<=SUBSTRING('30.12.2012', 1, 2))
AND (p10.PA_Name='Event_Month_To' AND P10.PA_Value<=SUBSTRING('30.12.2012', 4, 2))
AND (p11.PA_Name='Event_Year_To' AND P11.PA_Value<=SUBSTRING('30.12.2012', 7, 4)))

上記の後に があり、最後に上記とまったく同じunion all別の節があります。WHERE

BIRT ではパラメーターを渡すことができ、渡す?必要がある SQL クエリに挿入する必要があります。ご覧のとおり、ユーザー入力によって渡される開始日と終了日があります。今私の問題は、パラメータをすべてに渡し、パラメータをすべてに渡す方法がわからないことですSDatestart datesEndDateend dates

私の問題の解決策はありますか?

4

2 に答える 2

1

この問題は、パラメーターから1行のテーブルを作成し、次のようにレポートクエリに添付することで解決しました。

,(select ? SDate, ? EDate) params
WHERE p.ROLE = 'doctor'
AND((p6.PA_Name='Event_Day_From' AND p6.PA_Value>= SUBSTRING(params.SDate, 1, 2))
AND (p7.PA_Name='Event_Month_From' AND p7.PA_Value>=SUBSTRING(params.SDate, 4, 2))
AND (p8.PA_Name='Event_Year_From' AND P8.PA_Value>=SUBSTRING(params.SDate, 7, 4)))
AND ((p9.PA_Name='Event_Day_To' AND P9.PA_Value<=SUBSTRING(params.EDate, 1, 2))
AND (p10.PA_Name='Event_Month_To' AND P10.PA_Value<=SUBSTRING(params.EDate, 4, 2))
AND (p11.PA_Name='Event_Year_To' AND P11.PA_Value<=SUBSTRING(params.EDate, 7, 4)))

お役に立てれば。

**現在、PostgreSQLデータベースでこのメソッドを使用しています。

于 2013-01-11T08:52:44.947 に答える
1

[編集] BIRT は「名前付きパラメーター」をサポートしていないプレーンな JDBC を使用するため、次のように書くことはできません。

... p6.PA_Value>= SUBSTRING(:start, 1, 2) ...

これによりエラーが発生します。

その他のオプションは、プロパティ バインディングまたは JavaScript を使用してクエリを作成し、実行前にその一部を置き換えることです。このレポートの例を参照してください

WITH一部のデータベースでは、パラメーターにエイリアスを割り当てる構文もサポートされてい?ます。このブログ投稿では、これを使用する方法について説明しています。

于 2012-11-06T12:39:30.223 に答える