我有以下问题,我在多个地方做一个选择。 例如:
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结果,但是没有。 有什么方法可以解决这个问题吗?
答案 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