我在我的应用程序中有一个结果表和一个允许用户按一个或多个值过滤结果集的框。
我必须在记录中添加一个可选的needBy
日期,以便一个人可以指定他们是否需要在特定日期处理请求。
我正在努力的部分是过滤可选的日期结构。我的过滤器如下:
这是我的查询示例。 WHERE
对于一切都期望@needBy
工作得很好。
SELECT
*
FROM
TABLE
WHERE
(@requestor IS NULL OR r.Requestor = @requestor)
AND
(@user IS NULL OR t.QID = @user)
AND
(@tool IS NULL OR t.ToolID = @tool)
AND
(@role IS NULL OR t.RoleID = @role)
AND
(@action IS NULL OR t.ActionID = @action)
AND
(@status IS NULL OR t.StatusID = @status)
AND
(@needBy IS NULL OR CASE
WHEN @needBy = 'current' THEN r.NeedByDate <= GETUTCDATE()
WHEN @needBy = 'future' THEN r.NeedByDate > GETUTCDATE()
WHEN @needBy = 'all' THEN r.NeedByDate IS NOT NULL
END)
我应该如何针对日期不同地处理此查询?另外一个问题是@needBy = 'all'
。在这种情况下,我需要所有记录,无论它们在将来有什么日期,过去或者根本没有。
在上面的代码中,它似乎不像WHEN/THEN
语句中的逻辑运算符。