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句のそのセクションが自動的に使用され、100未満のeveworkflowIDを持つ結果のみが表示されます。

どんな助けでも大歓迎です!

ありがとう

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)

編集デフォルトのケースでカバーされている1から4の間でない
ケースを気にしませんでした。@WFStatus

于 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 に答える