首页 > 解决方案 > TSQL 如何在 CASE 语句中进行过滤?

问题描述

我试图弄清楚如何按日期过滤/仅在 @getdisabledoptions = 0 时获取所有没有日期的选项,否则如果 @getdisabledoptions = 1 我想获取所有选项。

WHERE AffiliationID = @AffiliationID
AND  
case  

这是我想按禁用日期过滤或在@getdisabledoptions = null 时获取空值的情况

when @GetDisabledOptions = 0 then DisabledDate > GETDATE() or DisabledDate = IS NULL

否则在这里我只想提取 AffiliationId = @affiliationId 的所有内容,而不是按日期过滤

else end 

我在这里做错了什么?我试图查找其他答案,但我只是措辞不正确。

标签: sqlsql-servertsql

解决方案


根据您描述的逻辑,您可以将WHERE表达式简化为:

WHERE AffiliationID = @AffiliationID
AND (@GetDisabledOptions = 1 or DisabledDate > GETDATE() or DisabledDate IS NULL)

推荐阅读