我试图在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
答案 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