SQL Server:where子句中的IF条件

时间:2017-01-30 18:20:17

标签: sql-server tsql

我试图在where子句中放入if条件,但我无法找到正确的语法。

逻辑应该是如果一段时间等于一个特定的数字然后检查以确保pdftype不是null否则不要检查所有。

这是我到目前为止所拥有的:

where  
    g.ReportInstanceID = blah
    and rcr.FormID = blah
    and rcr.FormSectionID = blah
    and rcr.SubSectionID = blah
    and CASE rcr.DataCollectionPeriodID 
           WHEN 163 THEN (PDFType IS NOT NULL)
        END

2 个答案:

答案 0 :(得分:5)

这不是CASE声明的工作原理。我认为这样做你想要的:

where  g.ReportInstanceID = blah
    and rcr.FormID = blah
    and rcr.FormSectionID = blah
    and rcr.SubSectionID = blah
    and (
          (rcr.DataCollectionPeriodID = 163 and PDFType IS NOT NULL)
          or rcr.DataCollectionPeriodID <> 163
        )

答案 1 :(得分:1)

试试这个:

. . .
AND CASE when rcr.DataCollectionPeriodID = 163 THEN
     case when PDFType is not null then 1 else 0 end
    else 1 END = 1