SQL - Error SUM

 
Vista:

Error SUM

Publicado por jperet (19 intervenciones) el 11/12/2006 16:45:41
Buenas, tengo la siguiente consulta:

SELECT DISTINCT t4.SlpName AS [Representante], T2.Name AS [Provincia], T0.CardCode AS [Codigo cliente], T0.CardName AS [Nombre Cliente], SUM ( ISNULL(T3.DocTotal,0)) AS [Total Facturado]

FROM OCRD T0 inner join CRD1 T1 ON t0.CardCode = t1.CardCode

INNER JOIN OCST T2 ON T1.state = T2.Code LEFT JOIN ODLN T3 ON t1.CardCode = t3.CardCode AND T3.DocDate Between '[%2]' And '[%3]' LEFT JOIN OSLP T4 ON T0.SlpCode=T4.SlpCode LEFT JOIN DLN1 T5 ON T3.DocEntry = T5.DocEntry LEFT JOIN OITM T6 ON T5.ItemCode = T6.ItemCode

WHERE T2.Name='Barcelona'
GROUP BY T0.CardCode, T0.CardName, t4.SlpName, T2.Name

ORDER BY T0.CardCode

Esta consulta me muestra todos los clientes de una determinada provincia, en este caso la de barcelona, si han comprado me aparece el Total Facturado el cual se calcula a partir de los totales de los albaranes. Si no han comprado me sale Total Facturado a 0.
Hasta aquí bien, el problema es que esta suma no me la hace bien, me sale multiplicada por 3. He probado de añadir otras tablas y se me augmenta este total, no se bien por que número me lo multiplica.

Alguna idea?

Muchas 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

RE:Error SUM

Publicado por Evelio Lezama (15 intervenciones) el 11/12/2006 16:50:29
Es posible que salga multiplicada porque estés omitiendo algún campo de indice de las tablas unidas

Si me dices Cuales son los campos de las tablas te puedo ayudar mejor

saludos
Lic. Evelio Lezama
Software Architect
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

RE:Error SUM

Publicado por jperet (19 intervenciones) el 11/12/2006 17:02:12
Buenas Evelio, gracias x responder
Las tablas son las siguientes:

OCRD = Tabla clientes (donde CardCode es el codigo del cliente y CardName el nombre)
CRD1=Tabla direcciones de los clientes
OCST=Tabla provincias
ODLN = Tabla alaranes (donde DocDate es la fecha del albarán)
OSLP=Tabla representantes
DLN1=Tabla lineas de albarán
OITM=Tabla artículos (donde ItemCode es el código artículo)

No se si es lo que me preguntas, perdoname pero no se muxo de sql....
Saludos
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

RE:Error SUM

Publicado por Evelio Lezama (15 intervenciones) el 11/12/2006 17:17:39
Te pregunto especificamente cuales son los indices de las tablas que estás consultando.

Los indices.

Saludos
Lic. Evelio Lezama
Software Architect
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

RE:Error SUM

Publicado por jperet (19 intervenciones) el 11/12/2006 17:22:29
Perdona Evelio pero me podrías especificar qué es un indice?
Estoy bastante verde en el tema....
Gracias
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

RE:Error SUM

Publicado por Evelio Lezama (15 intervenciones) el 11/12/2006 17:27:59
Cuando creas una tabla y quieres que no se repitan algunos datos colocas una clave primaria... (Con la llavesita que está en barra de tareas)

La clave primaria es la que impide que se repitan los registros, esa es la que quiero saber..., de cada una de las tablas en cuestión...

Si le puedes tomar unas fotos a las tablas en modo diseño mejor...

Saludos...

Mi correo es
[email protected]
Voy a Almorzar

Estoy conectado al messenger.
Me gustaría ayudarte pero necesito esa información

De todos modos si me envías tu correo o si te puedes conectar al messenger te ayudo mejor.

Saludos
Lic. Evelio Lezama
Software Architect
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

RE:Error SUM

Publicado por Evelio Lezama (15 intervenciones) el 11/12/2006 17:24:05
Las claves Primarias

Lic. Evelio Lezama
Software Architect
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

RE:Error SUM

Publicado por Evelio Lezama (15 intervenciones) el 11/12/2006 17:01:44
Repito.
Ya había leío la consulta.
Lo que creo que está pasando es que en el Inner Join de las tablas, estés olvidando unir con un campo que pertenece a tu indice y que se pueda estar repitiendo lo cual puede redundar en la Suma...

Verifica los Inner.
Si me muestras las tablas (una imagen de los campos) quizás te pueda ayudar mejor

Saludos
Lic. Evelio A. Lezama
Software Architect
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

RE:Error SUM

Publicado por jperet (19 intervenciones) el 11/12/2006 17:06:16
Entonces, no puedo tener campos de otras tablas que no tengan ninguna union con la tabla indice?
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
sin imagen de perfil

RE:Error SUM

Publicado por Liliana (426 intervenciones) el 11/12/2006 18:56:17
Hola,
¿Cuál es el motivo por el que estás relacionando T5 y T6 que no se usan en la consulta?
Si en T6 hay 3 filas, te triplicará el total, si hay 4 filas, te cuadriplicará el total, etc,

Saludos,
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

RE:Error SUM

Publicado por jeperet (19 intervenciones) el 13/12/2006 16:49:05
Saludos,
Agrego estas tablas por que quiero poner condiciones sobre los campos de dichas tablas. No hay alguna forma de que no te multiplique el total?

Gracias
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
sin imagen de perfil

RE:Error SUM

Publicado por Liliana (426 intervenciones) el 13/12/2006 18:07:13
Solamente con una subconsulta que agrupe las filas de estas tablas:

SELECT DISTINCT
t4.SlpName AS [Representante],
T2.Name AS [Provincia],
T0.CardCode AS [Codigo cliente],
T0.CardName AS [Nombre Cliente],
SUM ( ISNULL(T3.DocTotal,0)) AS [Total Facturado]

FROM OCRD T0
inner join CRD1 T1 ON t0.CardCode = t1.CardCode
INNER JOIN OCST T2 ON T1.state = T2.Code
LEFT JOIN ODLN T3 ON t1.CardCode = t3.CardCode AND T3.DocDate Between '[%2]' And '[%3]'
LEFT JOIN OSLP T4 ON T0.SlpCode=T4.SlpCode
LEFT JOIN ( SELECT una sola fila de datos por cada documento
FROM DLN1 T5 ON T3.DocEntry = T5.DocEntry
LEFT JOIN OITM T6 ON T5.ItemCode = T6.ItemCode
WHERE condiciones
GROUP BY documento )

WHERE T2.Name='Barcelona'
GROUP BY T0.CardCode, T0.CardName, t4.SlpName, T2.Name

ORDER BY T0.CardCode
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

RE:Error SUM

Publicado por jeperet (19 intervenciones) el 13/12/2006 18:18:49
Perdona, a que te refieres con 'una sola fila de datos por cada documento'?
Lo siento pero ando bastante verde en sql...

Gracias
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