Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<&燃气轮机;不等于函数不';无法在SQL Server中适当地过滤记录_Sql_Sql Server_Reporting Services - Fatal编程技术网

<&燃气轮机;不等于函数不';无法在SQL Server中适当地过滤记录

<&燃气轮机;不等于函数不';无法在SQL Server中适当地过滤记录,sql,sql-server,reporting-services,Sql,Sql Server,Reporting Services,我有一个业务需求,我需要根据一些额外的过滤修改SSRS报告。我有一个字段名为ProductShortName,其中他们不希望记录产品名为“BLOC”、“Small Business Visa”、以“WOW”开头的产品名和以“Review”结尾的产品名 这是原始条件,其中条件: WHERE ( A.AppDetailSavePointID = 0) AND (B.QueueID = 1) AND (A.DecisionStatusName <>

我有一个业务需求,我需要根据一些额外的过滤修改SSRS报告。我有一个字段名为ProductShortName,其中他们不希望记录产品名为“BLOC”、“Small Business Visa”、以“WOW”开头的产品名和以“Review”结尾的产品名

这是原始条件,其中条件:

       WHERE ( A.AppDetailSavePointID = 0) AND (B.QueueID = 1) 
              AND (A.DecisionStatusName <> N'Cancelled') 
              AND (A.DecisionStatusName <> N'Withdrawn') 
              OR  (A.AppDetailSavePointID = 0) 
              AND  ((B.QueueID = - 25) OR (B.QueueID = - 80)) 
              AND (A.DecisionStatusName <> N'Cancelled') 
              AND (A.DecisionStatusName <> N'Withdrawn') 
              OR  (A.AppDetailSavePointID = 0) 
              AND (A.DecisionStatusName <> N'Cancelled') 
              AND (A.DecisionStatusName <> N'Withdrawn') 
              AND (LEFT(C.QueueName, 2) = 'LC')
其中(A.AppDetailSavePointID=0)和(B.QueueID=1)
和(A.DecisionStatusName N'Cancelled')
和(A.DecisionStatusName N‘撤回’)
或(A.AppDetailSavePointID=0)
和((B.QueueID=-25)或(B.QueueID=-80))
和(A.DecisionStatusName N'Cancelled')
和(A.DecisionStatusName N‘撤回’)
或(A.AppDetailSavePointID=0)
和(A.DecisionStatusName N'Cancelled')
和(A.DecisionStatusName N‘撤回’)
和(左(C.QueueName,2)='LC')
我添加了额外的筛选以满足以下条件:

 WHERE (A.AppDetailSavePointID = 0) 
        AND ((A.ProductShortName <> 'BLOC') 
        AND (A.ProductShortName <> 'Small Business Visa') 
        AND NOT (A.ProductShortName LIKE 'WOW%') 
        AND NOT (A.ProductShortName LIKE '%Review')) 
        AND (B.QueueID = 1) 
        AND (A.DecisionStatusName <> N'Cancelled') 
        AND (A.DecisionStatusName <> N'Withdrawn') 
        OR (A.AppDetailSavePointID = 0) 
        AND ((B.QueueID = - 25) OR (B.QueueID = - 80)) 
        AND (A.DecisionStatusName <> N'Cancelled') 
        AND (A.DecisionStatusName <> N'Withdrawn') 
        AND ((A.ProductShortName <> 'BLOC') 
        AND (A.ProductShortName <> 'Small Business Visa') 
        AND NOT (A.ProductShortName LIKE 'WOW%') 
        AND NOT (A.ProductShortName LIKE '%Review')) 
        AND (A.AppDetailSavePointID = 0) 
        AND (A.DecisionStatusName <> N'Cancelled') 
        AND (A.DecisionStatusName <> N'Withdrawn') 
        AND (LEFT(C.QueueName, 2) = 'LC') 
        AND ((A.ProductShortName <> 'BLOC') 
        AND (A.ProductShortName <> 'Small Business Visa') 
        AND NOT (A.ProductShortName LIKE 'WOW%') 
        AND NOT (A.ProductShortName LIKE '%Review'))
其中(A.AppDetailSavePointID=0)
和((A.ProductShortName‘BLOC’)
和(A.ProductShortName“小型企业签证”)
而不是(A.ProductShortName,比如“哇%”)
而不是(类似“%Review”的ProductShortName)
和(B.QueueID=1)
和(A.DecisionStatusName N'Cancelled')
和(A.DecisionStatusName N‘撤回’)
或(A.AppDetailSavePointID=0)
和((B.QueueID=-25)或(B.QueueID=-80))
和(A.DecisionStatusName N'Cancelled')
和(A.DecisionStatusName N‘撤回’)
和((A.ProductShortName‘BLOC’)
和(A.ProductShortName“小型企业签证”)
而不是(A.ProductShortName,比如“哇%”)
而不是(类似“%Review”的ProductShortName)
和(A.AppDetailSavePointID=0)
和(A.DecisionStatusName N'Cancelled')
和(A.DecisionStatusName N‘撤回’)
和(左(C.QueueName,2)='LC')
和((A.ProductShortName‘BLOC’)
和(A.ProductShortName“小型企业签证”)
而不是(A.ProductShortName,比如“哇%”)
而不是(类似“%Review”的ProductShortName)

虽然这会删除产品,但它会另外删除很少的产品。我不明白怎么做?有人能建议一个合适的where条件吗?

您应该避免在没有适当括号的情况下混合和/或条件。 如果你混合了and和OR,那么就用括号来解决混淆。如果你不这样做,结果会出人意料

例如,在查询中,如果AppDetailSavePointID=0,则所有其他条件都将无效/不相关。我肯定这不是你想要的

   WHERE (AppDetailSavePointID = 0) AND (QueueID = 1) 
          AND (DecisionStatusName <> N'Cancelled') 
          AND (DecisionStatusName <> N'Withdrawn') 
          OR  (AppDetailSavePointID = 0) 
          AND  ((QueueID = - 25) OR (QueueID = - 80)) 
          AND (DecisionStatusName <> N'Cancelled') 
          AND (DecisionStatusName <> N'Withdrawn') 
          OR  (AppDetailSavePointID = 0) 
          AND (DecisionStatusName <> N'Cancelled') 
          AND (DecisionStatusName <> N'Withdrawn') 
          AND (LEFT(QueueName, 2) = 'LC')
您可以执行以下两项操作之一:

-- this is ok.
WHERE a
AND b
AND c
AND (d OR e)
AND (f OR g)
或者


你应该避免在没有适当包围它们的情况下混合和/或条件。 如果你混合了and和OR,那么就用括号来解决混淆。如果你不这样做,结果会出人意料

例如,在查询中,如果AppDetailSavePointID=0,则所有其他条件都将无效/不相关。我肯定这不是你想要的

   WHERE (AppDetailSavePointID = 0) AND (QueueID = 1) 
          AND (DecisionStatusName <> N'Cancelled') 
          AND (DecisionStatusName <> N'Withdrawn') 
          OR  (AppDetailSavePointID = 0) 
          AND  ((QueueID = - 25) OR (QueueID = - 80)) 
          AND (DecisionStatusName <> N'Cancelled') 
          AND (DecisionStatusName <> N'Withdrawn') 
          OR  (AppDetailSavePointID = 0) 
          AND (DecisionStatusName <> N'Cancelled') 
          AND (DecisionStatusName <> N'Withdrawn') 
          AND (LEFT(QueueName, 2) = 'LC')
您可以执行以下两项操作之一:

-- this is ok.
WHERE a
AND b
AND c
AND (d OR e)
AND (f OR g)
或者


如果原来的条件是工作,我只会增加它。请尝试以下操作:

WHERE 
    (AppDetailSavePointID = 0) AND (QueueID = 1) 
    AND (DecisionStatusName <> N'Cancelled') 
    AND (DecisionStatusName <> N'Withdrawn') 
    OR  (AppDetailSavePointID = 0) 
    AND  ((QueueID = - 25) OR (QueueID = - 80)) 
    AND (DecisionStatusName <> N'Cancelled') 
    AND (DecisionStatusName <> N'Withdrawn') 
    OR  (AppDetailSavePointID = 0) 
    AND (DecisionStatusName <> N'Cancelled') 
    AND (DecisionStatusName <> N'Withdrawn') 
    AND (LEFT(QueueName, 2) = 'LC')
    AND NOT (
        ProductShortName IN ('BLOC', 'Small Business Visa')
        OR ProductShortName LIKE 'WOW%'
        OR ProductShortName LIKE '%Review'
    )
在哪里
(AppDetailSavePointID=0)和(QueueID=1)
和(DecisionStatusName N'Cancelled')
和(DecisionStatusName N‘撤回’)
或(AppDetailSavePointID=0)
和((队列ID=-25)或(队列ID=-80))
和(DecisionStatusName N'Cancelled')
和(DecisionStatusName N‘撤回’)
或(AppDetailSavePointID=0)
和(DecisionStatusName N'Cancelled')
和(DecisionStatusName N‘撤回’)
和(左(QueueName,2)='LC')
而不是(
ProductShortName IN('集团','小企业签证')
或者像“哇%”这样的ProductShortName
或ProductShortName,如“%Review”
)

如果原始条件有效,我只会添加到其中。请尝试以下操作:

WHERE 
    (AppDetailSavePointID = 0) AND (QueueID = 1) 
    AND (DecisionStatusName <> N'Cancelled') 
    AND (DecisionStatusName <> N'Withdrawn') 
    OR  (AppDetailSavePointID = 0) 
    AND  ((QueueID = - 25) OR (QueueID = - 80)) 
    AND (DecisionStatusName <> N'Cancelled') 
    AND (DecisionStatusName <> N'Withdrawn') 
    OR  (AppDetailSavePointID = 0) 
    AND (DecisionStatusName <> N'Cancelled') 
    AND (DecisionStatusName <> N'Withdrawn') 
    AND (LEFT(QueueName, 2) = 'LC')
    AND NOT (
        ProductShortName IN ('BLOC', 'Small Business Visa')
        OR ProductShortName LIKE 'WOW%'
        OR ProductShortName LIKE '%Review'
    )
在哪里
(AppDetailSavePointID=0)和(QueueID=1)
和(DecisionStatusName N'Cancelled')
和(DecisionStatusName N‘撤回’)
或(AppDetailSavePointID=0)
和((队列ID=-25)或(队列ID=-80))
和(DecisionStatusName N'Cancelled')
和(DecisionStatusName N‘撤回’)
或(AppDetailSavePointID=0)
和(DecisionStatusName N'Cancelled')
和(DecisionStatusName N‘撤回’)
和(左(QueueName,2)='LC')
而不是(
ProductShortName IN('集团','小企业签证')
或者像“哇%”这样的ProductShortName
或ProductShortName,如“%Review”
)

如果解除通用谓词的关联,阅读起来可能会更容易

(X和Y)或(X和Z)=X和(Y或Z)

这将产生:

WHERE (A.ProductShortName NOT LIKE 'WOW%')
  AND (A.ProductShortName NOT LIKE '%Review')
  AND (A.ProductShortName <> 'Small Business Visa')
  AND (A.DecisionStatusName <> N'Cancelled')
  AND (A.DecisionStatusName <> N'Withdrawn')
  AND (A.AppDetailSavePointID = 0)
  AND (   QueueID = 1
       OR QueueID = -25
       OR QueueID = -80
       OR LEFT(C.QueueName, 2) = 'LC'
      )
WHERE(A.ProductShortName不像“哇%”)
和(A.ProductShortName与“%Review”不同)
和(A.ProductShortName“小型企业签证”)
和(A.DecisionStatusName N'Cancelled')
和(A.DecisionStatusName N‘撤回’)
和(A.AppDetailSavePointID=0)
和(队列ID=1)
或QueueID=-25
或QueueID=-80
或左(C.QueueName,2)='LC'
)

如果解除通用谓词的关联,阅读起来可能会更容易

(X和Y)或(X和Z)=X和(Y或Z)

这将产生:

WHERE (A.ProductShortName NOT LIKE 'WOW%')
  AND (A.ProductShortName NOT LIKE '%Review')
  AND (A.ProductShortName <> 'Small Business Visa')
  AND (A.DecisionStatusName <> N'Cancelled')
  AND (A.DecisionStatusName <> N'Withdrawn')
  AND (A.AppDetailSavePointID = 0)
  AND (   QueueID = 1
       OR QueueID = -25
       OR QueueID = -80
       OR LEFT(C.QueueName, 2) = 'LC'
      )
WHERE(A.ProductShortName不像“哇%”)
和(A.ProductShortName与“%Review”不同)
和(A.ProductShortName“小型企业签证”)
和(A.DecisionStatusName N'Cancelled')
和(A.DecisionStatusName N‘撤回’)
和(A.AppDetailSavePointID=0)
和(队列ID=1)
或QueueID=-25
或QueueID=-80
或左(C.QueueName,2)='LC'
)

您能展示一些示例数据吗?这里没有足够的信息来帮助你。我想你