我正在 SQL Server 2016 上使用 Microsoft SQL 管理工作室。我试图从两组不同的条件中筛选出一些结果。第一组完成繁重的工作,但我只需要添加第二组条件,仅过滤掉实际上未被第一组条件过滤掉的几行。需要过滤的其他行必须满足额外条件的精确组合,否则将过滤太多行。
所以我有这个:
SELECT
postdate
,costarea
,storeloc
,user
,movetype
,account
FROM table1
WHERE
--Condition 1
(postdate > '12/31/2015'
AND costarea <> 'None'
AND storeloc <> '50A')
OR
--Condition 2
(account <> '5500'
AND user <> 'JDOE'
AND movetype <> '405')
基本上,我需要过滤条件 1 下的行,然后过滤将按条件 2 过滤但未按条件 1 过滤的几行,因为它们通过了这些条件。解决这个问题的最佳方法是什么?
我认为你正在尝试的是......
where
NOT (
condition1
or
condition2
)
但是你必须通过这样做来扭转逻辑
where
NOT
(
( postdate < '2016-01-01'
AND costarea = 'None'
AND storeloc = '50A' )
OR
( account = '5500'
AND user = 'JDOE'
AND movetype = '405')
)
我按照上述操作,如果我能知道此查询的最终结果是什么,请