devolver 0 en consulta oracle si no hay resultados

A ver si alguien me puede ayudar en algo sencillo, que no lo veo.

Tengo una consulta Oracle (SELECT SUM(cantidad) FROM bi_t_produccion_cons_silos) que es evidente lo que hace :P

El problema lo tengo en, si no hay nada en bi_t_produccion_cons_silos, devuelve vacío (que no null). Y necesito que sea 0.
He probado el comando NVL
select NVL(TO_CHAR(select sum(cantidad)from bi_t_produccion-cons_silos),0) cantidad from bi_t_produccion_cons_silos
y no me funciona. También he probado a meter un IF con idéntico resultado:
select case when cantidad is null then 0 else cantidad end cantidad from bi_t_produccion_cons_silos
ya que obviamente estas funciones no funcionan con vacío.

¿Alguien se le ocurre?
Te dejo un link a ver si te sirve, no lo he probado, pero voy con prisa e igual te ayuda ;)

Return zero if no records found
Gracias Crowhuntt.

Había probado el COALESCE pero tampoco me ha funcionado.
Finalmente, el post que habla del union me ha dado una idea y he hecho
select cantidad from bi_t_produccion_cons_silos UNION ALL SELECT 0 FROM DUAL
y ese sí funciona.

El problema ahora es que la subconsulta devolvía 2 valores. Lo soluciono con un SUM

SELECT "SSCC","ID_OF","NUMERO_OF","ID_LOTE","LOTE",
(CANTIDAD - (SELECT sum(cantidad) cantidad FROM (SELECT SUM(cons.cantidad) cantidad FROM bi_t_produccion_cons_silos cons  UNION ALL SELECT 0 FROM DUAL))) cantidad,
"FECHA_HORA","USUARIO","ESTADO","ID_INFORME","DESTINO","MARCA" FROM BI_V_PRODUCCION_LEIDO_SILO1 LEIDO
order by fecha_hora asc


a ver si lo puedo afinar para que sea uno u otro.
2 respuestas