Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/08/2012, 12:45
Avatar de Andres95
Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Respuesta: Union y resta de dos querys

Asumiendo que se trata de una diferencia de inventario vs salidas y que el campo llave es ItemCode

Lo podrias realizar con un full join con el cual aun cuando no exista inventario te aparecerian las salidas de productos.

Otra opcion seria un LEFT JOIN, pero ya dependeria del escenario que desees contemplar..

En esta liga se explica brevemente cada tipo de outer join.

Usar combinaciones externas

Código:
SELECT ISNULL(S.[itemcode], P.[itemcode]) [itemcode]
       ,ISNULL(S.[dscription], P.[dscription]) [dscription]
       ,ISNULL(S.Cantidad, 0) - ISNULL(P.Cantidad, 0) Cantidad
       ,ISNULL(S.Total, 0) - ISNULL(P.Total, 0) Total
FROM   (
	SELECT T3.[itemcode], 
		   T3.[dscription], 
		   T2.[cardcode], 
		   T2.[cardname], 
		   Cantidad=Sum(T3.[quantity]), 
		   T3.[unitmsr], 
		   Total=Sum(T3.[totalsumsy]) 
	FROM   [dbo].[oinv] T2 
		   INNER JOIN [dbo].[inv1] T3 
				   ON T2.docentry = T3.docentry 
	WHERE  T2.[doctype] <> 'S' 
		   AND T2.[docdate] >= '[%0]' 
		   AND T2.[docdate] <= '[%1]' 
	GROUP  BY T3.[itemcode], 
			  T3.[dscription], 
			  T2.[cardcode], 
			  T2.[cardname], 
			  T3.[quantity], 
			  T3.[unitmsr], 
			  T3.[totalsumsy] 
) S
FULL JOIN (

	SELECT T1.[itemcode], 
		   T1.[dscription], 
		   T0.[cardcode], 
		   T0.[cardname], 
		   Cantidad=Sum(T1.[quantity]), 
		   T1.[unitmsr], 
		   Total=Sum(T1.[totalsumsy]) 
	FROM   orin T0 
		   INNER JOIN rin1 T1 
				   ON T0.docentry = T1.docentry 
	WHERE  T0.[doctype] <> 'S' 
		   AND T0.[docdate] >= '[%0]' 
		   AND T0.[docdate] <= '[%1]' 
	GROUP  BY T1.[itemcode], 
			  T1.[dscription], 
			  T0.[cardcode], 
			  T0.[cardname], 
			  T1.[quantity], 
			  T1.[unitmsr], 
			  T1.[totalsumsy] 
) P 
ON S.[itemcode] = p.[itemcode]
ORDER BY ISNULL(S.[itemcode], P.[itemcode])
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.