【发布时间】:2016-06-20 16:24:28
【问题描述】:
我已经阅读了一些关于“WHERE”子句中的 case 语句的其他问答,但我无法真正理解如何使用它。我将在代码的 sn-p 下方发布。我相信我对如何使用 case 语句的基本原则一无所知,这就是代码无法编译/运行的原因。感谢您的帮助。
where i.status IN ('CR','L','O')
and i.FGCs > 0
and i.LastShpd > CAST(CONVERT(CHAR(11),DATEADD(DAY,-180,GETDATE()),113) AS datetime)
and (Case
When n.OnOrder IN ('0', '')
Then i.OnOrder = 0 or i.LastShpd < CAST(CONVERT(CHAR(11),DATEADD(DAY,-21,GETDATE()),113) AS datetime)))
End)
按 i.LastShpd desc 排序
为了解释上面的内容,我已经得到了适当的“SELECT”和“FROM”语句。现在我正在根据显示的变量(ecx LastShpd)过滤结果。我希望 case 语句做的是:当 n.OnOrder = 0 时,我只想保留 i.OnOrder = 0 或 i.LastShpd 大于 21 天的行。
【问题讨论】:
-
你需要在结尾和 (Case When n.OnOrder IN ('0', '') Then i.OnOrder = 0 or i.LastShpd
标签: sql where-clause case-statement