我要做的是基于一个参数值,更改WHERE子句。我尝试过使用CASE表达式,但意识到我试图将其用于非预期目的。这是我的尝试:
WHERE CASE WHEN @active = 1 THEN vp.date_installed IS NOT NULL AND vp.date_removed IS NULL
WHEN @active = 0 THEN vp.date_removed IS NOT NULL
END
当然,这里的问题是试图使用THEN来执行简单的值检索之外的操作。那么我该怎么做呢?
我建议使用布尔逻辑:
WHERE
(@active = 1 AND vp.date_installed IS NOT NULL AND vp.date_removed IS NULL)
OR (@active = 0 AND vp.date_removed IS NOT NULL)