6
select * from table_name
 where BaseDocEntry=15 and BaseDocType='PRRH' and ItemCode='TestStudy2'
   and WhseCode='01' and (currentdoctype<>'PUSH' and CurrentDocEntry<>15)

根据我上面写的查询,将获取来自 INS2 的数据,不包括 currentdoctype [PUSH] 和 CurrentDocEntry 不是 15 的所有数据。我希望我的查询是,它必须排除数据只有当这种组合即currentdoctype=PUSH 和 CurrentDocEntry=15 出现在同一行中,然后排除该行。

你能修复这个查询吗?

4

3 回答 3

22

用这个:

and not (currentdoctype='PUSH' and CurrentDocEntry=15)
于 2012-05-21T10:34:59.137 回答
1

由于您正在使用AND并且OR当 currentdoctype 与“PUSH”不同且 CurrentDocEntry 与 15 不同时,查询不被排除。

如果您想要 currentdoctype=PUSH 和 CurrentDocEntry=15 只需将这些条件改为:

select * from ins2
where BaseDocEntry=15 and BaseDocType='PRRH' and ItemCode='TestStudy2'
and WhseCode='01' and (currentdoctype='PUSH' and CurrentDocEntry=15)
于 2012-05-21T10:36:43.957 回答
0

在某些情况下 NOT 不起作用,您可以使用简单的 case 和 where 子句来解决它。这将仅排除 currentdoctype ='PUSH' AND CurrentDocEntry = 15 的情况。

SELECT *,
CASE
WHEN currentdoctype ='PUSH' AND CurrentDocEntry = 15 THEN 'c1'
ELSE 'c2'
END AS com_con
FROM table_name
WHERE  BaseDocEntry=15 AND BaseDocType='PRRH' AND ItemCode='TestStudy2'
   AND WhseCode='01' AND com_con = 'c2';
于 2018-02-28T23:59:31.823 回答