Sql server SQL筛选出与所有条件匹配的行

Sql server SQL筛选出与所有条件匹配的行,sql-server,select,filter,where-clause,Sql Server,Select,Filter,Where Clause,我有一个表,在这里我必须做一个select语句。 该表包含1616372个值,我需要确保其中5177个值不会显示在基于某些过滤器的select语句中 我做了一个select语句,它返回我需要过滤掉的所有值: SELECT [EntryNo] ,[AccountNo] ,[CompanyNo] ,[Description] ,[Date] ,[Code] FROM dbo.Table WHERE CAST([Date] AS Time) = '23:59:59.0000000'

我有一个表,在这里我必须做一个select语句。 该表包含1616372个值,我需要确保其中5177个值不会显示在基于某些过滤器的select语句中

我做了一个select语句,它返回我需要过滤掉的所有值:

SELECT  
[EntryNo] 
,[AccountNo] 
,[CompanyNo] 
,[Description] 
,[Date] 
,[Code] 
FROM dbo.Table 
WHERE CAST([Date] AS Time) = '23:59:59.0000000' 
AND [Code] <> 'x' 
AND YEAR([Date]) = 2020
选择
[入口编号]
,[AccountNo]
,[CompanyNo]
,[说明]
,[日期]
,[代码]
从dbo.Table
何处强制转换([日期]作为时间)='23:59:59.0000000'
和[代码]'x'
年份([日期])=2020年
这给了我5177行我需要过滤掉

但是,当我从xxx创建一个SELECT*并添加您在这里看到的内容的相反WHERE子句时,它会过滤掉与任何条件匹配的行,而不是所有条件

SELECT * FROM dbo.Table 
WHERE CAST([Date] AS Time) <> '23:59:59.0000000' 
AND [Code] <> 'x' 
AND YEAR([Date]) <> 2020
从dbo.表中选择*
在哪里播放([日期]作为时间)'23:59:59.0000000'
和[代码]'x'
和2020年([日期])
我试着在标准周围加上各种括号,但我无法使它工作,因此它只能过滤掉5177行

这些行没有任何特定的ID,因为它们位于暂存表中,而使它们与众不同的是[EntryNo]和[CompanyNo]的组合


我希望您能提供帮助。

您在第二次查询中没有正确地否定条件,
应该变成
(根据)

或者,您可以将所有内容封装在一个否定中,让SQL来完成工作,而不是手动执行:

哪里没有(
强制转换([日期]作为时间)='23:59:59.0000000'
和[代码]'x'
年份([日期])=2020年
)
非(a、b和c)=(非a、非b或非c)