Eliminar Duplicados..

26/05/2004 - 18:45 por Manolo Zepeda | Informe spam
Que tal amigos..!!

Tengo un problema en una consulta la cual relaciono 1
tabla principal, con otras 2 de las cuales necesito
unicamente un total, la situacion es que me devuelve
valores duplicados cuando hay mas de 2 registros en
cualquiera de las 2 tablas en un rango de fechas.

Como puedo evitar eso? Ya lo he agrupado y la suma me sale
al doble o triple dependiendo de los registros que
encuentre.


El resultado es el siguiente:

Id_Chofer Chofer Abonos Combustibles
4 IGNACIO GALDEAN FLORES 202.12 1036.12
4 IGNACIO GALDEAN FLORES 202.12 1288.65
4 IGNACIO GALDEAN FLORES 202.12 5000
4 IGNACIO GALDEAN FLORES 3400.38 1036.12
4 IGNACIO GALDEAN FLORES 3400.38 1288.65
4 IGNACIO GALDEAN FLORES 3400.38 5000


Consulta..
SELECT C.Id_Chofer, C.Nombre AS
Chofer,Fleteros.Id_Fletero,
Fleteros.Nombre AS Fletero, ISNULL(en.cantidad, 0)
AS Abonos, ISNULL(ent2.cantidad, 0) AS Combustibles
FROM dbo.Choferes C

LEFT OUTER JOIN
(SELECT Id_chofer, cantidad
FROM Entregas
WHERE concepto <> 'si' AND CONVERT(char(1), pagado)
= 0 AND Fecha BETWEEN '20030910' AND '20030918')
en ON C.Id_Chofer = en.Id_chofer

LEFT OUTER JOIN
(SELECT Id_chofer, cantidad
FROM Entregas2
WHERE concepto <> 'si' AND CONVERT(char(1), pagado)
= 0 AND Fecha BETWEEN '20030910' AND '20030918')
ent2 ON C.Id_Chofer = ent2.Id_chofer INNER JOIN
dbo.Fleteros ON C.Id_Fletero = dbo.Fleteros.Id_Fletero

GROUP BY C.Id_Chofer, C.Nombre, dbo.Fleteros.Id_Fletero,
dbo.Fleteros.Nombre, ISNULL(en.cantidad, 0),
ISNULL(ent2.cantidad, 0)

HAVING (C.Id_Chofer IN (4))
 

Leer las respuestas

#1 ulises
26/05/2004 - 19:20 | Informe spam
Si solo necesitas un total, necesitas agrupar los
registros, por ejemplo tu sentencia :

LEFT OUTER JOIN
(SELECT Id_chofer, cantidad
FROM Entregas
WHERE concepto <> 'si' AND CONVERT(char(1), pagado)
= 0 AND Fecha BETWEEN '20030910' AND '20030918') en
ON C.Id_Chofer = en.Id_chofer

reemplazala por :

LEFT OUTER JOIN
(SELECT Id_chofer, SUM(cantidad) as cantidad
FROM Entregas
WHERE concepto <> 'si' AND CONVERT(char(1), pagado)
= 0 AND Fecha BETWEEN '20030910' AND '20030918'
GROUP BY Id_chofer )en
ON C.Id_Chofer = en.Id_chofer

haz lo mismo en la otra sentencia.

Saludos,
Ulises

Que tal amigos..!!

Tengo un problema en una consulta la cual relaciono 1
tabla principal, con otras 2 de las cuales necesito
unicamente un total, la situacion es que me devuelve
valores duplicados cuando hay mas de 2 registros en
cualquiera de las 2 tablas en un rango de fechas.

Como puedo evitar eso? Ya lo he agrupado y la suma me


sale
al doble o triple dependiendo de los registros que
encuentre.


El resultado es el siguiente:

Id_Chofer Chofer Abonos Combustibles
4 IGNACIO GALDEAN FLORES 202.12 1036.12
4 IGNACIO GALDEAN FLORES 202.12 1288.65
4 IGNACIO GALDEAN FLORES 202.12 5000
4 IGNACIO GALDEAN FLORES 3400.38 1036.12
4 IGNACIO GALDEAN FLORES 3400.38 1288.65
4 IGNACIO GALDEAN FLORES 3400.38 5000


Consulta..
SELECT C.Id_Chofer, C.Nombre AS
Chofer,Fleteros.Id_Fletero,
Fleteros.Nombre AS Fletero, ISNULL(en.cantidad, 0)
AS Abonos, ISNULL(ent2.cantidad, 0) AS Combustibles
FROM dbo.Choferes C

LEFT OUTER JOIN
(SELECT Id_chofer, cantidad
FROM Entregas
WHERE concepto <> 'si' AND CONVERT(char(1), pagado)
= 0 AND Fecha BETWEEN '20030910' AND '20030918')
en ON C.Id_Chofer = en.Id_chofer

LEFT OUTER JOIN
(SELECT Id_chofer, cantidad
FROM Entregas2
WHERE concepto <> 'si' AND CONVERT(char(1), pagado)
= 0 AND Fecha BETWEEN '20030910' AND '20030918')
ent2 ON C.Id_Chofer = ent2.Id_chofer INNER JOIN
dbo.Fleteros ON C.Id_Fletero = dbo.Fleteros.Id_Fletero

GROUP BY C.Id_Chofer, C.Nombre, dbo.Fleteros.Id_Fletero,
dbo.Fleteros.Nombre, ISNULL(en.cantidad, 0),
ISNULL(ent2.cantidad, 0)

HAVING (C.Id_Chofer IN (4))

.

Preguntas similares