排除验证两个条件的记录

时间:2012-05-21 10:31:50

标签: sql sql-server select

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发生在同一行,然后排除该行。

你能解决这个问题吗?

3 个答案:

答案 0 :(得分:14)

使用此:

and not (currentdoctype='PUSH' and CurrentDocEntry=15)

答案 1 :(得分: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)

答案 2 :(得分:0)

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

27.1.0