我正在创建一个SQL查询,其中需要一个条件where子句.

应该是这样的:

SELECT 
    DateAppr,
    TimeAppr,
    TAT,
    LaserLTR,
    Permit,
    LtrPrinter,
    JobName,
    JobNumber,
    JobDesc,
    ActQty,
    (ActQty-LtrPrinted) AS L,
    (ActQty-QtyInserted) AS M,
    ((ActQty-LtrPrinted)-(ActQty-QtyInserted)) AS N
FROM 
    [test].[dbo].[MM]
WHERE 
    DateDropped = 0
            --This is where i need the conditional clause 
    AND CASE
            WHEN @JobsOnHold = 1 THEN DateAppr >=  0
            ELSE  DateAppr != 0
        END

上述查询不起作用.这不是正确的语法,还是有其他方法可以做到这一点,我不知道?

我不想使用动态SQL,那么有没有其他方法,或者我必须使用类似于使用if else和使用同一个查询和不同的where子句这样的变通方法?

推荐答案

试试这个

SELECT 
    DateAppr,
    TimeAppr,
    TAT,
    LaserLTR,
    Permit,
    LtrPrinter,
    JobName,
    JobNumber,
    JobDesc,
    ActQty,
    (ActQty-LtrPrinted) AS L,
    (ActQty-QtyInserted) AS M,
    ((ActQty-LtrPrinted)-(ActQty-QtyInserted)) AS N
FROM 
    [test].[dbo].[MM]
WHERE 
    DateDropped = 0
    AND (
    (ISNULL(@JobsOnHold, 0) = 1 AND DateAppr >= 0) 
    OR 
    (ISNULL(@JobsOnHold, 0) != 1 AND DateAppr != 0)
    )

You can read more about conditional WHERE here.

Sql相关问答推荐

Postgresql -如何计算刷卡和刷卡时间

如何解决Error:operator is not unique:unknown—unknown在一个动态SQL查询?""""

如何将资源密集型自连接转换为更快的查询?

如何在幂函数中正确使用Power()和Exp()

Lag()函数的差异:R与SQL(将R代码转换为SQL)

如何在Presto中将多个列合并到一个数组中

SQL:计算与另一列中给定值互斥的匹配项

每小时 Select 1行

多条件SQL排序行为

在Power Bi中将SQL代码转换为DAX

使用多个WITH子查询的替代方法

SQL:使用年/月/日分区查询某个时间段的数据

从每月生成的系列中生成每日汇率

group by 并根据同表中其他列的某些条件获取 group by 中的某一列值

SQL Server中使用min()和max()从选定的特定值id表中删除不必要的时间

snowflake中的动态文件名生成

如何根据 SQL Server 中 1 条语句中 SELECT 的结果进行 INSERT 或 UPDATE

如何创建一个递归计数器来查找一个元素有多少父级和子级?

如何根据与 BigQuery 中另一个表的匹配更新一个表中的列?

如何计算每行出现的次数并显示在另一个表中?