データベースのSQLストアドプロシージャに基づいて(Crystal Reports XIで)レポートを作成しています。クエリはいくつかのパラメータを受け入れ、指定された日付範囲内のレコードを返します。パラメータが渡された場合は、どのレコードを返すかを決定するために使用されます。 1つ以上のパラメータが渡されない場合、そのフィールドは返されるレコードの種類を制限するために使用されません。それはので、ここで、少し複雑だだ私のWHERE句:条件付きのsqlクエリは時々動作するだけです
WHERE ((Date > @start_date) AND (Date < @end_date))
AND (@EmployeeID IS NULL OR emp_id = @EmployeeID)
AND (@ClientID IS NULL OR client_id = @ClientID)
AND (@ProjectID IS NULL OR project_id = @ProjectID)
AND (@Group IS NULL OR group = @Group)
さて、問題のために:
クエリ(およびレポート)は年間2000から2005の範囲内で、古いデータのために美しく動作します。しかし、WHERE句は、最近のデータを適切にフィルタリングしていないため、パラメータ@GroupがNULLのレコードのみを返します(つまり、渡されません)。
ヒント、ヒント、またはリードがありがとうございます!
パフォーマンスの観点から、[catch-all queries](http://sqlinthewild.co。)のブログ記事をご覧ください。 za/index.php/2009/03/19/catch-all-queries /)。 –
残りのクエリを表示できますか?ありがとう、ジョー; – JNK
;それは有益です。 – dj18