|
我正在创造一个需要条件where子句的SQL查询。
- q5 @/ ]6 @ \/ `应该是这样的:
. N; K+ ~ q3 e2 f. @/ b$ e( \SELECT DateAppr, TimeAppr, TAT, LaserLTR, Permit, LtrPrinter, JobName, JobNumber, JobDesc, ActQty, (ActQty-LtrPrinted) AS L, (ActQty-QtyInserted) AS M, ((ActQty-LtrPrinted)-(ActQty-QtyInserted)) AS NFROM [test].[dbo].[MM]WHERE DateDropped = --This is where i need the conditional clause AND CASE WHEN @JobsOnHold = 1 THEN DateAppr >= ELSE DateAppr != END以上查询无效。这是不正确的语法,还是我不知道的另一种方式?( Z( c: k) q& f% i O
我不想使用动态SQL,是否还有其他方法,或者必须使用类似的解决方案,如if else对不同的where使用和使用同样的查询?
: R; y( Y. m, r" } ! d/ L6 f' r2 w# o6 Y1 C
解决方案:
+ P1 b7 ?2 d9 f2 ^2 @0 t, [- u 试试这个
3 p& z3 l' y. I c5 @SELECT DateAppr, TimeAppr, TAT, LaserLTR, Permit, LtrPrinter, JobName, JobNumber, JobDesc, ActQty, (ActQty-LtrPrinted) AS L, (ActQty-QtyInserted) AS M, ((ActQty-LtrPrinted)-(ActQty-QtyInserted)) AS NFROM [test].[dbo].[MM]WHERE DateDropped = 0 AND (ISNULL(@JobsOnHold,0) = 1 AND DateAppr >= 0) OR (ISNULL(@JobsOnHold,0) != 1 AND DateAppr != 0) )您可以在这里阅读相关条件WHERE更多信息。 |
|