Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

resta entre dos querys

Estas en el tema de resta entre dos querys en el foro de SQL Server en Foros del Web. que tal amigos, como estan, fijense que tengo esta duda, ojala puedan ayudarme; la situacion es la siguiente: Tengo estos dos querys que me regresan ...
  #1 (permalink)  
Antiguo 25/05/2010, 22:24
 
Fecha de Ingreso: agosto-2009
Mensajes: 44
Antigüedad: 14 años, 8 meses
Puntos: 1
resta entre dos querys

que tal amigos, como estan, fijense que tengo esta duda, ojala puedan ayudarme; la situacion es la siguiente:

Tengo estos dos querys que me regresan 40 resultados cada uno, lo que me encantaria hacer y me facilitaria la vida es poder restar los elementos entre ellos.

(cantidadD - cantidadO)
(gradosD - gradosO))
los querys....

SELECT a.id,
SUM(c.cantidadD) as ru,
SUM(c.gradosD) as rg
FROM tbl_almacen a
INNER JOIN tbl_movimiento b ON b.id_destino = a.id
INNER JOIN tbl_vale c ON c.id_movimiento = b.id
WHERE (c.id_vendimia = @prVendimia)
AND (c.noSemana < @prSemana)
GROUP BY a.id,a.nombre_contenido,a.unidades,a.grados

SELECT a.id,
SUM(e.cantidadO) as ru,
SUM(e.gradosO) as rg
FROM tbl_almacen a
INNER JOIN tbl_movimiento d ON d.id_origen = a.id
INNER JOIN tbl_vale e ON e.id_movimiento = d.id
WHERE (e.id_vendimia = @prVendimia)
AND (e.noSemana < @prSemana)
GROUP BY a.id,a.nombre_contenido,a.unidades,a.grados

la unica diferencia que tienen es el inner join de id_origen y id_destino, ya que debo de poder determinar cuando tuvo una entrada y cuando tuvo una salida. Y ya estuve rompiendome la cabeza para hacerlo en un solo query

espero sea clara mi pregunta, saludos!
  #2 (permalink)  
Antiguo 26/05/2010, 02:22
Avatar de triqui  
Fecha de Ingreso: diciembre-2008
Ubicación: Zaragoza(España)
Mensajes: 624
Antigüedad: 15 años, 4 meses
Puntos: 31
De acuerdo Respuesta: resta entre dos querys

Lo que deberias hacer es algo así, seguramente no te ejecutará, pero unelos por el union y mete todo dentro del from para sacarte los resultados.


Select a.id,ru-ru2,rg-rg2
FROM
(
SELECT a.id,
SUM(c.cantidadD) as ru,
SUM(c.gradosD) as rg
FROM tbl_almacen a
INNER JOIN tbl_movimiento b ON b.id_destino = a.id
INNER JOIN tbl_vale c ON c.id_movimiento = b.id
WHERE (c.id_vendimia = @prVendimia)
AND (c.noSemana < @prSemana)
GROUP BY a.id,a.nombre_contenido,a.unidades,a.grados
UNION
SELECT a.id,
SUM(e.cantidadO) as ru2,
SUM(e.gradosO) as rg2
FROM tbl_almacen a
INNER JOIN tbl_movimiento d ON d.id_origen = a.id
INNER JOIN tbl_vale e ON e.id_movimiento = d.id
WHERE (e.id_vendimia = @prVendimia)
AND (e.noSemana < @prSemana)
GROUP BY a.id,a.nombre_contenido,a.unidades,a.grados
)GROUP BY a.id


Si no te funcionara esto, metele otro nivel:


SELECT t1.ru-t2.ru,t1.rg-t2.rg FROM(
Select ru,rg From(
SELECT a.id,
SUM(c.cantidadD) as ru,
SUM(c.gradosD) as rg
FROM tbl_almacen a
INNER JOIN tbl_movimiento b ON b.id_destino = a.id
INNER JOIN tbl_vale c ON c.id_movimiento = b.id
WHERE (c.id_vendimia = @prVendimia)
AND (c.noSemana < @prSemana)
GROUP BY a.id,a.nombre_contenido,a.unidades,a.grados) t1
UNION
Select ru,rg From(
SELECT a.id,
SUM(e.cantidadO) as ru,
SUM(e.gradosO) as rg
FROM tbl_almacen a
INNER JOIN tbl_movimiento d ON d.id_origen = a.id
INNER JOIN tbl_vale e ON e.id_movimiento = d.id
WHERE (e.id_vendimia = @prVendimia)
AND (e.noSemana < @prSemana)
GROUP BY a.id,a.nombre_contenido,a.unidades,a.grados) t2)

Espero que te oriente.
salu2
__________________
La nueva red social de quinielas quiniela resultados
Cazaresultados Futbol base en directo

Etiquetas: dos, querys
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:42.