我一直在尝试为下面的查询创建条件where子句,但我一直看到很多替代方案,我不知道在这种情况下要使用什么。
我需要的是这样的东西:(当然这个代码是错误的)
where casCaseType='m'
and casCurrentWorkflowID=990
and cmsDateCreated between @FromDate and @ToDate
CASE @WFStatus
WHEN @WFStatus=1 then eveworkflowID<100
WHEN @WFStatus=2 then eveworkflowID<200
WHEN @WFStatus=3 then eveworkflowID<300
WHEN @WFStatus=4 then eveworkflowID<400
ELSE 0
END
因此,当我选择WFStatus参数为1时,它会自动使用where子句的那一部分,只显示那些eveworkflowID小于100的结果。
非常感谢任何帮助!
由于
答案 0 :(得分:5)
WHERE casCaseType='m'
AND casCurrentWorkflowID=990
AND cmsDateCreated between @FromDate and @ToDate
AND eveworkflowID <
CASE @WFStatus
WHEN 1 THEN 100
WHEN 2 THEN 200
WHEN 3 THEN 300
WHEN 4 THEN 400
ELSE 0
END
答案 1 :(得分:2)
我不确定,但如果我理解正确的话:
...
AND eveworkflowID < @WFStatus * 100
答案 2 :(得分:1)
where casCaseType='m'
and casCurrentWorkflowID=990
and cmsDateCreated between @FromDate and @ToDate
and (@WFStatus BETWEEN 1 AND 4 AND eveworkflow < @WFStatus * 100)
修改强>
不介意@WFStatus
不在1到4之间的情况,这是默认情况所涵盖的。
答案 3 :(得分:0)
where casCaseType='m'
and casCurrentWorkflowID=990
and cmsDateCreated between @FromDate and @ToDate
CASE eveworkflowID<
WHEN @WFStatus=1 then 100
WHEN @WFStatus=2 then 200
WHEN @WFStatus=3 then 300
WHEN @WFStatus=4 then 400
ELSE 0
END