SQL - sumar en dos consultas

   
Vista:

sumar en dos consultas

Publicado por Francisco (2 intervenciones) el 13/01/2015 15:09:39
Hola,
Al unir estas 2 consultas necesito que las cantidad de ambas se sumen, sin embargo las muestra por separado.
Agradecería mucho la ayuda.


SELECT TOP (100) PERCENT Q1.ItemCode AS 'Cod Producto', Q1.Dscription AS 'Articulo', SUM(Q1.Quantity) AS 'Cantidad'
FROM dbo.ORIN AS Q0 INNER JOIN
dbo.RIN1 AS Q1 ON Q0.DocEntry = Q1.DocEntry
WHERE (Q0.Indicator <> N'NT') AND (Q0.FolioNum IS NOT NULL) AND (Q1.WhsCode = N'1010')
GROUP BY Q1.Dscription, Q1.ItemCode
UNION ALL
SELECT TOP (100) PERCENT dbo.INV1.ItemCode AS 'Cod Producto', dbo.INV1.Dscription AS 'Articulo', -SUM(dbo.INV1.Quantity) AS 'Cantidad'
FROM dbo.OINV INNER JOIN
dbo.INV1 ON dbo.OINV.DocEntry = dbo.INV1.DocEntry
WHERE (dbo.OINV.Indicator <> N'NT') AND (dbo.OINV.FolioNum IS NOT NULL) AND (dbo.INV1.WhsCode = N'1010')
GROUP BY dbo.INV1.Dscription, dbo.INV1.ItemCode
ORDER BY 'Cod Producto'
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

sumar en dos consultas

Publicado por leonardo_josue (880 intervenciones) el 13/01/2015 20:59:05
Hola Francisco.

No nos dices con qué BD's estás trabajando, por lo tanto, es un tanto complicado darte una respuesta puntual.

tratando de entender la lógica de tu consulta, creo que lo que prendes es obtener una especie de SALDOS, es decir, por un lado la primer parte del UNION obtiene cantidades positivas (que pueden ser STOCK) y la segunda parte cantidades negativas (que pueden ser VENTAS). Según lo que entiendo lo que pretendes encontrar es la DIFERENCIA (o suma) de estas dos cantidades...

Supongo que tu consulta arroja algo como esto:

1
2
3
4
5
6
COD_PRODUCTO|ARTICULO|CANTIDAD
----------------------------------------------------------------
1|'UNO'|20
2|'DOS'|10
1|'UNO'|-10
2|'DOS'|-5


y tú lo que pretendes es obtener lo siguiente:

1
2
3
4
COD_PRODUCTO|ARTICULO|CANTIDAD
----------------------------------------------------------------
1|'UNO'|10
2|'DOS'|5

Partiendo de esto, tienes varias opciones para obtener la consulta... una sería hacer una subconsulta y volver a agrupar..., es decir algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT cod_producto, articulo, SUM(cantidad) cantidad
FROM
(   SELECT
       TOP (100) PERCENT Q1.ItemCode AS 'Cod Producto',
       Q1.Dscription AS 'Articulo',
       SUM(Q1.Quantity) AS 'Cantidad'
    FROM dbo.ORIN AS Q0
    INNER JOIN dbo.RIN1 AS Q1 ON Q0.DocEntry = Q1.DocEntry
    WHERE (Q0.Indicator <> N'NT') AND (Q0.FolioNum IS NOT NULL) AND (Q1.WhsCode = N'1010')
    GROUP BY Q1.Dscription, Q1.ItemCode
    UNION ALL
    SELECT
       TOP (100) PERCENT dbo.INV1.ItemCode AS 'Cod Producto',
       dbo.INV1.Dscription AS 'Articulo',
       -SUM(dbo.INV1.Quantity) AS 'Cantidad'
    FROM dbo.OINV
    INNER JOIN dbo.INV1 ON dbo.OINV.DocEntry = dbo.INV1.DocEntry
    WHERE
       (dbo.OINV.Indicator <> N'NT') AND
       (dbo.OINV.FolioNum IS NOT NULL) AND (dbo.INV1.WhsCode =     N'1010')
    GROUP BY dbo.INV1.Dscription, dbo.INV1.ItemCode
) T
GROUP BY
    T.cod_producto, T.articulo

La otra opción sería tratar de no utilizar UNION's y hacer una consulta simple, sin embargo, esta es un poco más completa y necesitaríamos más información acerca de tus tablas y su contenido.

Haz la prueba y nos comentas.

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

sumar en dos consultas

Publicado por Francisco (2 intervenciones) el 14/01/2015 12:59:58
Leo Muchas Gracias, Realice como lo indicaste y funciono.
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