过滤具有多个where条件的表

时间:2019-04-03 14:43:25

标签: sql sql-order-by filtering where

我试图从表中选择仅提取符合我条件的数据。 我基本上想

  

不包括2019年,
不包括英亩= 0,
不包括   policynumber为null,
排除其中(liab = 0和acres> 0)。

由于未达到预期的行数,我可能会得到一些错误的否定,是否有办法像我在excel中那样,通过一系列步骤来做到这一点,但我显然没有想要在excel中做到这一点。

from  [dbo].[Hail_Data_2013_2018_incl_SSN]
where cropyear <> 2019 or (policynumber is not null) or (PolicyAcres <> 0) 
or (Policyliability <> 0 or PolicyAcres < 0) 

一步一步地行将行得通,是否可以将其重写以逐步完成,或者我的“或”组合是否错误?

2 个答案:

答案 0 :(得分:0)

我认为您的逻辑需要一些工作。我怀疑您需要“与”而不是“或”。发布数据表和预期结果,我们可以帮助您进行深入研究。

declare @mydata as table (policyacres int, policynumber varchar(10), Policyliability int, cropyear int)

INSERT INTO @mydata
Select -1, '123x', 0, 2019 UNION ALL
Select 1,'224y', 0, 2019 UNION ALL
Select -1,'223d',0,2020

Select * from @mydata 
 where cropyear <> 2019 and (policynumber is not null) and (PolicyAcres <> 0) and (Policyliability = 0 and PolicyAcres < 0)

答案 1 :(得分:0)

我想你想要这个:

where 
  (cropyear <> 2019) and
  (policynumber is not null) and 
  (PolicyAcres <> 0) and 
  (Policyliability <> 0 or PolicyAcres <= 0)