2015-08-13 2 views
-1

У меня есть следующая проблема: я делаю выбор с несколькими местами. пример:isnull не работает SQL Server

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, сливаться, чтобы заменить нулевые результаты, с 0, но не делает. Есть ли способ исправить это?

+0

Пожалуйста, прочитайте [ask]. Затем, пожалуйста, правильно отформатируйте свой вопрос. – Amit

ответ

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; 
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, как вы можете искать

0

попробуйте этот PLS

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 
Смежные вопросы