2015-08-13 2 views
-1

J'ai le problème suivant, je fais un select avec plusieurs où. exemple:isnull ne fonctionne pas SQL Server

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

Résultat:

|fecha de movimiento| 
|2015-02-20| 

le problème est que dans certains cas, ne pas les dates, la consultation avec 100 différents Où me jette à seulement 90 dates, les 10 autres n'existent pas. Je veux faire est la suivante:

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

Résultat:

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

et essayer isnull, s'unir, pour remplacer les résultats nuls, avec 0, mais ne fonctionne pas. y a-t-il un moyen de résoudre ce problème?

+0

Veuillez lire [demander]. Ensuite, veuillez formater correctement votre question. – Amit

Répondre

0

Vous avez besoin d'un 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

essayer cette

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

ce ajoutera reste de la ligne 10 qui contient des valeurs nulles dans fechamov, comme vous pouvez rechercher

0

essayez ce 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