根据参数更改 WHERE 子句

Alter WHERE clause based on parameter

我想做的是基于一个参数值,改变 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)