isnull不工作SQL Server

时间:2015-08-13 18:31:41

标签: sql sql-server coalesce isnull

我有以下问题,我在多个地方做一个选择。 例如:

select isnull(fechamov,0)
from movimientos
where (provedor='1000' and depto='20') or
      (provedor='1001' and depto='200')

结果:

|fecha de movimiento|
|2015-02-20|
问题是,在某些情况下没有日期,咨询100个不同的地方只是抛出我90个日期,其他10个不存在。我想这样做:

select isnull(fechamov,0)
from movimientos
where (provedor='1000' and depto='20') or
      (provedor='1001' and depto='200')

结果:

|Fechamovimiento|
|0|
|2015-02-20|

并尝试使用isnull,coalesce来替换null结果,但是没有。 有什么方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

试试这个

select isnull(fechamov,0)
from movimientos
where (provedor='1000' and depto='20') or
      (provedor='1001' and depto='200') or fechamov is null

这会将包含空值的10行的其余部分添加到fechamov中,因为您可能正在寻找

答案 1 :(得分:0)

您需要left join

with p as (
      select '1000' as prevedor, '20' as depto union all
      select '1001', '200'
    )
select coalesce(m.fechamov,0)
from p left join
     movimientos m
     on m.prevedor = p.prevedor and m.depto = p.depto;

答案 2 :(得分:0)

试试这个

select isnull(fechamov,0)
from movimientos
where (provedor='1000' and depto='20') or
(provedor='1001' and depto='200') 
union 
select isnull(fechamov,0)
from movimientos
where  fechamov is null