Na consulta sql abaixo preciso que a coluna "B" traga o valor 0 (zero) quando for nulo. Porém, mesmo utilizando a função "NVL" o sistema continua a retornar nulo. Como resolver esse problema ?
SELECT
a.codcoligada,
a.chapa,
a.data,
sum(a.numhoras) A,
(select nvl(sum(b.numhoras), 0)
FROM
amovfundia b
WHERE
b.codcoligada = a.codcoligada and
b.chapa = a.chapa and
b.data = a.data and
b.codeve in ('1163')
GROUP BY
b.codcoligada, b.chapa, b.data) B
FROM
amovfundia a
WHERE
a.codcoligada = 4 and
a.chapa = '0101922' and
a.data between (
select x.iniciomensal from aperiodo x where x.codcoligada = a.codcoligada and x.mescomp =2 and x.anocomp =2012)
and (select x.fimmensal from aperiodo x where x.codcoligada = a.codcoligada and x.mescomp =2 and x.anocomp =2012) and
a.codeve in ('0557', '1158', '1160')
GROUP BY
a.codcoligada, a.chapa, a.data
NVL((select sum(b.numhoras)
FROM
amovfundia b
WHERE
b.codcoligada = a.codcoligada and
b.chapa = a.chapa and
b.data = a.data and
b.codeve in ('1163')
GROUP BY
b.codcoligada, b.chapa, b.data),0)
O problema é que como sua consulta não traz NADA, do modo que você tava fazendo não dava para inserir 0 de retorno num select que não retorna NADA.
Neste caso é preciso colocar "por fora".