3

我一直在尝试为下面的查询创建一个条件 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 的那些结果。

任何帮助将不胜感激!

谢谢

4

4 回答 4

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
于 2012-03-08T12:09:34.503 回答
2

我不确定,但如果我理解正确: ... AND eveworkflowID < @WFStatus * 100

于 2012-03-08T12:08:00.823 回答
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 之间的情况,这是您的默认情况所涵盖的。

于 2012-03-08T12:09:41.550 回答
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
于 2012-03-08T12:29:55.440 回答