在Where子句中添加Case语句

Cip*_*rIS 3 sql select case switch-statement

我需要case在一个where子句中添加一个语句.我希望它根据TermDate的值运行下面的任何一个语句.

Select * 
from myTable
where id = 12345
    AND TermDate CASE  
    WHEN NULL THEN
       AND getdate() BETWEEN StartDate AND DATEADD(dd, 30, StartDate)
    ELSE
    AND GETDATE < TermDate
    END
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 8

为什么不使用OR条件?

SELECT * 
FROM  myTable
WHEN  id = 12345
AND   ((TermDate IS NULL AND 
        getdate() BETWEEN StartDate AND DATEADD(dd, 30, StartDate)) OR
       GETDATE() < TermDate)
Run Code Online (Sandbox Code Playgroud)