如何根据布尔参数调整我的 select

How to condition my select based on boolean parameter

我正在创建一个存储过程,它应该 return 基于布尔标志 @status 的用户列表,如下所示:

此列的类型为 datetime


我可以处理第一个用例,在以下代码的最后一行使用 @status is null

CREATE PROCEDURE selectUsersByStatus (
    @userId int,
    @status bit     
    )

AS

SELECT * from users

WHERE users.id = @userId
and (@status is null or CASE @status WHEN 1 THEN (users.LastAccess is not null) ELSE (users.LastAccess is null))

然而,该行的其余部分显然不起作用。如何进行?

谢谢

尝试简单:

CREATE PROCEDURE selectUsersByStatus (
    @userId int,
    @status bit     
    )

AS

SELECT * from users

WHERE users.id = @userId
and (@status is null OR (@status = 1 AND users.LastAccess IS NOT NULL) OR (@status = 0 AND users.LastAccess IS NULL))