SQL Server - como se hace una suma entre consultas

   
Vista:

como se hace una suma entre consultas

Publicado por Miguel (4 intervenciones) el 15/08/2014 06:36:01
Saludos! pues soy un poco nuevo con esto del SQL y estoy tratando de hacer una consulta sobre las siguientes tablas
bd2

la consulta consiste en lo siguiente, se debe de sumar lo que hay en gastos que basicamente son entradas al almacen y restar lo que haya en materia prima que son salidas de almacen, las consultas por separado son las siguientes

select NombreConcepto, SUM(Gastos.Cantidad) as total from Gastos, Concepto_Gastos
where Concepto_Gastos.idConceptoGastos = Gastos.idConceptogatos and IdPartidaGastos=1 group by NombreConcepto

ACIDO ASCORBICO 45.000
ACIDO CITRICO 1005.000
ACIDO MURIATICO 26.000

select NombreConcepto, SUM(MateriaPrima.cantidad) as total from MateriaPrima, Concepto_Gastos
where Concepto_Gastos.idConceptoGastos= MateriaPrima.id_ConceptoGasto and IdPartidaGastos=1 group by NombreConcepto order by NombreConcepto

ACIDO ASCORBICO 48.246
ACIDO CITRICO 917.894


y el resultado esperado deberia de ser

ACIDO ASCORBICO -3.246
ACIDO CITRICO 87.106
ACIDO MURIATICO 26.00

de antemano gracias por su ayuda y por su tiempo y espero m puedan ayudar :)
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
Imágen de perfil de Isaias

como se hace una suma entre consultas

Publicado por Isaias (3186 intervenciones) el 15/08/2014 18:06:52
Por principio de cuentas, dinos en que motor de base de datos estas ejecutando esto y segundo, debes utilizar INNER JOIN, para enlazar tus tablas
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

como se hace una suma entre consultas

Publicado por Miguel (4 intervenciones) el 15/08/2014 20:02:52
gracias por tu tiempo; estoy utilizando MIcrosoft sql server 2012, gracias por el tip del inner join, despues de un rato de probar y fallar llegue ala siguiente solucion

select tabla1.NombreConcepto, tabla1.[entrada]- coalesce(tabla2.[salida], 0) as [existencia]
from
(select NombreConcepto, sum(Cantidad)AS 'entrada' from Gastos, Concepto_Gastos
where Gastos.idConceptogatos = Concepto_Gastos.idConceptoGastos and IdPartidaGastos=1
group by NombreConcepto) tabla1
inner join
(select NombreConcepto, sum(Cantidad)AS 'salida' from MateriaPrima, Concepto_Gastos
where MateriaPrima.id_ConceptoGasto = Concepto_Gastos.idConceptoGastos and IdPartidaGastos=1
group by NombreConcepto ) tabla2
on
tabla1.NombreConcepto = tabla2.NombreConcepto

order by NombreConcepto


me falta una ultima cosa, solo se tienen que mostrar los elementos cuya existencia sea menor al minimo establecido (Concepto_Gastos.minimo) pero no encuentro como hacerlo

gracias por la ayuda
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

como se hace una suma entre consultas

Publicado por Miguel (4 intervenciones) el 15/08/2014 21:04:06
corrijo--- seria left join en vez de inner join ya que si no no apareceran todos los registros,

me sigo peleamdo con lo de filtrar los resultados
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
Imágen de perfil de Isaias

como se hace una suma entre consultas

Publicado por Isaias (3186 intervenciones) el 15/08/2014 23:25:13
Código antiguo

SELECT ...........
FROM t1, t2, t3 -- mencionas las tablas
WHERE t1.campo = t2.campo and -- aquí las unes
t3.campo = t2.campo

Checa estos ejemplos:

http://geeks.ms/blogs/ozonicco/pages/tip-on-y-where-cuando-se-usen-con-un-inner-join-no-tienen-alguna-diferencia-l-243-gica.aspx
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

como se hace una suma entre consultas

Publicado por Miguel (4 intervenciones) el 16/08/2014 20:01:42
vale! lo revisare para ponerme al dia, gracias por tu tiempo
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