我正在基于数据库中的 SQL 存储过程创建报表(在 Crystal Reports XI 中)。该查询接受一些参数,并返回指定日期范围内的记录。如果传入参数,它们用于确定要返回哪些记录。如果没有传入一个或多个参数,则该字段不用于限制返回的记录类型。这有点复杂,所以这是我的 WHERE 子句:
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 的记录(即:未传入)。
任何提示、提示或线索表示赞赏!