SQL - Problema con los totales en una consulta

 
Vista:

Problema con los totales en una consulta

Publicado por jperet (2 intervenciones) el 23/02/2007 19:20:24
Llevo un tiempo con esta consulta y cuando creo que lo tengo me sale otro problema...
El tema es el siguiente, esta consulta quiero que me muestre la suma de los totales de lineas de los albaranes restado con el sumatorio de las líneas de las devoluciones, de momento me muestra bien el sumatorio de las lineas de albarán mientras que con las devoluciones no, me sale el importe multiplicado, he intentado, sin éxito, de solo seleccionar sólo aquellos campos que me interesan de cada tabla, aún así me lo sigue haciendo,
ahí va:

SELECT DISTINCT T3.SlpName AS [Representante], T5.State AS [Provincia], T0.CardCode, T0.CardName,
(SUM(ISNULL(T7.Quantity,0))-SUM(ISNULL(T9.Quantity,0))) AS [TOTAL CANTIDAD] ,
(t7.totalAl-t9totalDev) AS [TOTAL (€)]

FROM OCRD T0

LEFT JOIN (SELECT CardCode, DocEntry, DocDate FROM OCRD) T1 /*Seleccionamos los campos que nos ineteresa de la tabla ODLN (Albaranes)*/
ON T0.CardCode=T1.CardCode AND T1.DocDate BETWEEN '[%1]' AND '[%2]' /*Definimos que las fechas sean variables y las preguntará en un msgbox antes de ejecutar la consulta*/

LEFT JOIN ( SELECT CardCode, State FROM CRD1) T2 ON T0.CardCode=T2.CardCode /* tabla CRD1 (direcciones de los IC)*/

LEFT JOIN ( SELECT SlpCode,SlpName FROM OSLP) T3 ON T0.SlpCode=T3.SlpCode /* tabla OSLP (tabla de representantes de los IC)*/

LEFT JOIN ( SELECT GroupCode, nomgrup = MAX( GroupName ) FROM OCRG GROUP BY GroupCode ) T4 ON T0.GroupCode=T4.GroupCode /* tabla OCRG (grupos de artículo)*/

INNER JOIN ( SELECT Code, nomprov = MAX( Name ) FROM OCST GROUP BY Code ) T5 ON T2.State=T5.Code /* tabla OCST (Tabla dnde CRD1.State=OCST.Code)*/

LEFT JOIN (SELECT totalAl=SUM(ISNULL(LineTotal,0)), DocEntry, Quantity FROM DLN1 GROUP BY DocEntry, Quantity) T7
ON T1.DocEntry = T7.DocEntry /* tabla DLN1 (Lineas de albaran)*/

LEFT JOIN (SELECT CardCode, DocEntry, DocDate FROM ORDN)T8
ON T0.CardCode=T8.CardCode AND T8.DocDate BETWEEN '[%1]' AND '[%2]' /* tabla ORDN (Devoluciones)*/

LEFT JOIN (SELECT DocEntry, totalDev=SUM(ISNULL(LineTotal,0)), Quantity FROM RDN1 GROUP BY DocEntry, Quantity)T9
ON t8.DocEntry=T9.DocEntry /* tabla RDN1 (Lineas Devoluciones)*/

WHERE
(T5.State='HUELVA' OR T5.State='SEVILLA' OR T5.State='CADIZ') /* especificamos las provincias q queremos*/

GROUP BY T3.SlpName, T5.nomprov, T1.CardCode, T1.CardName
ORDER BY T5.nomprov

Gracias!
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