SQL - MultiConsulta

   
Vista:

MultiConsulta

Publicado por Lith (14 intervenciones) el 15/02/2011 13:19:19
Buenas a todos a ver si alguien peude ayudarme. Porque parece facil pero me está dando un buen dolor de cabeza.

He hecho una vista para calcular los gastos de una obra, los gastos están en varias tablas así que tengo que ir sumando de aquí uy de allá. el problema es el siguiente cuando quiero devolver una columna con la suma de las anteriores, cuando una de las nateriores es nula o no tiene nada la suma resultante me queda vacía. A pesar de que alguna de las columnas si que tiene datos.

Coge datos de la vista nombreTrabajo, así como de las Tablas Minutas y Facturas que es donde tiene los otros gastos acumulados. Se identifica todo por el CODIGO de trabajo.

SELECT nombreTrabajo.CODIGO, nombreTrabajo.DESCRIPCION, ((select SUM(to_number(cantidad)) as Coste from facturas where (facturas.CODTRABAJO=nombreTrabajo.CODIGO)
AND (facturas.CODE_OBRA='' OR facturas.CODE_OBRA=null ) )+
((Select SUM(to_number(importebruto,'99999999.99')+to_number(facturas,'99999999.99')+to_number(manutencion,'99999999.99')) from minutas where (minutas.CODTRABAJO=nombreTrabajo.CODIGO)))
FROM nombreTrabajo

El tema es que cuando los gastos de las facturas son vacíos no suma nada. En fin, si alguien me ilustra se lo agradeceré, sino gracuas de todos modos.Y perdón por el lío de vista.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:MultiConsulta

Publicado por Leonardo Josué (880 intervenciones) el 15/02/2011 16:20:42
Hola Lith:

No mencionas en tu post con qué manejador de BD estás trabajando, pero cualquiera que sea debe tener alguna función para cambiar valores nulos. por ejemplo, en Oracle harías algo como esto:

nvl((select SUM(to_number(cantidad)) as Coste from facturas where facturas.CODTRABAJO=nombreTrabajo.CODIGO
AND (facturas.CODE_OBRA='' OR facturas.CODE_OBRA=null)), 0)

Esto quiere decir que si el resultado de la consulta es vacío entonces pone por defecto un valor de cero (0). Como te comenté, cada manejador tiene su propia función (isnull -> SQL Server, ifnull -> MySQL, coalesce ->PostgreSQL, etc) pero la sintaxis es muy parecida.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MultiConsulta

Publicado por Lith (14 intervenciones) el 21/02/2011 17:25:47
Eeeyyyy pues muchisimas gracias, me ha sido muy útil. De verdad. Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar