select ステートメントで if ステートメントを使用する方法はありますか?
これでは Case ステートメントを使用できません。実際に私はiReportを使用しており、パラメーターがあります。私がやりたいことは、ユーザーが特定のパラメーターを入力しないと、すべてのインスタンスが選択されることです。
たとえば、性別テーブルを参照する人物のテーブルで、where 句にパラメーターを指定すると、クエリは次のようになります。
SELECT * FROM persontable WHERE gender_id = $P{genderName}:numeric
パラメータ$P{genderName}が null または空白の場合、すべてが選択されます。私はこのクエリを試しました:
SELECT * FROM persontable WHERE gender_id IN (SELECT CASE WHEN $P{genderName}
IS NULL THEB (SELECT id from genderTable
WHERE id = $P{genderName}:numeric) ELSE $P{genderName}::numeric END)
しかし、「それ以上の行が返されます.....」というエラーが返されます.CASEステートメントが原因だと思います。どうすればいいですか?