Where子句取决于变量的值

Joh*_*ski 4 sql t-sql sql-server case where

我有2个字段,我想在一个WHERE语句中发送值.

  • 如果变量= 0,则将2个字段值设置为100.
  • 如果变量= 1,则将相同的2个字段值设置为101.

在我想象的世界中,不知怎的,这会起作用:

Where CASE WHEN @ReportType = 0 THEN 
    od.StatusCd = 100 AND odm.StatusCd = 100
WHEN @ReportType = 1 THEN 
    od.statusCd = 101 AND odm.StatusCd = 101
End
And od.CompletionDate between ....
And so on....
Run Code Online (Sandbox Code Playgroud)

我知道这是错的.但这就是我现在所处的位置.

Nde*_*ech 9

如果我已经理解你要做什么,这应该工作:

Where 
(
(@ReportType = 0 AND od.StatusCd = 100 AND odm.StatusCd = 100)
OR
(@ReportType = 1 AND od.statusCd = 101 AND odm.StatusCd = 101)
)
And od.CompletionDate between ....
And so on....
Run Code Online (Sandbox Code Playgroud)