排除零值但包含NULL值

时间:2019-02-01 17:37:30

标签: sql sql-server

我想在查询中仅排除零值,但还要保留NULL。 我尝试了一些可行的方法。它里面有一些“ JOIN”。 但是,它们似乎都产生不同的结果。输出具有不同数量的某些值。

例如可以说,一个选项为 COLUMN1 提供10行,其值为'A',5行为'B',3行为'C'。另一个选项为我提供了7行值“ A”和9行“ B”和2行“ C”。哪一个最合适(或都不适合?),为什么:

哪里..

  1. 和a.exitreason <>'0'或a.exitreason为空

  2. 和(a.exitreason <>'0'或a.exitreason为空)

  3. and(isull(a.exitreason,'')<>'0'或a.exitreason为空)

还是将其包含在查询的JOIN部分中(表LocalOffice)?

谢谢!

SELECT DISTINCT s.PeriodDate,s.Number,SiteID,
s.LocalID,s.Appointment,s.Agreement,s.AgreementCode,a.ExitReason
FROM Office s
INNER JOIN Employer e ON s.PeriodDate=e.PeriodDate AND s.EmployerID=e.EmployerID
LEFT JOIN LocalOffice a ON a.LocalOfficeID=a.LocalOfficeID
WHERE.....

1 个答案:

答案 0 :(得分:0)

您为特定案例提供的详细信息尚不清楚,但是关于您尝试过的WHERE语句,它们给出了正确的结果集(逻辑上他们要求的是不同的结果)。

根据您的初始描述,您希望给定值为0或NULL的所有行,第二个条件可以帮助您。