Imprimir página | Cerrar ventana

Group by + Join

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86768
Fecha de impresión: 27/Marzo/2026 a las 04:16


Tema: Group by + Join
Publicado por: paloma
Asunto: Group by + Join
Fecha de publicación: 06/Septiembre/2023 a las 16:22

Hola. Necesito ayuda. Estoy atascada. Intento hacer un Group by + join con otra tabla para poder comparar dos tablas que muestran información similar pero extraídas por diferentes canales y en concreto, comparar la suma de los importes de la Tabla1 que tienen el mismo número de pedido (en realidad no es que el pedido tenga diferentes importes sino que forman parte de un desglose interno) con el ImporteTotal de la Tabla2. El importe total real. Y no me cuadra.

Para entenderlo mejor y simplificarlo, he hecho dos tablas de prueba. Si paso el group sin el join sí funciona, pero el Join lo descabala todo.

Tabla1:
Pedido   Importe
7777        2,00 €
7777      25,00 €
9999      10,00 €
9999        5,00 €

Tabla2:
Pedido   Importe   ImporteTotal
7777       2,00 €    27,00 €    
7777     25,00 €    27,00 €
9999     10,00 €    15,00 €
9999       5,00 €    15,00 € 

Paso este select:
SELECT Tabla1.Pedido, Tabla1.Importe, Sum(Tabla1.Importe) AS TotalImp
FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.Pedido = Tabla2.Pedido
GROUP BY Tabla1.Pedido, Tabla1.Importe;

Consulta:
Pedido   Importe   TotalImp
7777       2,00 €      4,00 €    
7777     25,00 €    50,00 €
9999     10,00 €    10,00 €
9999       5,00 €    20,00 €

El resultado no es correcto. TotalImp me suma el importe del mismo registro y lo que yo quiero es que me sume los importes de los registros del mismo pedido, que en 7777 debería ser 27,00 € y 9999 debería ser 15,00 € y así coincidir con ImporteTotal de la Tabla2.

Gracias!!! 



Respuestas:
Publicado por: dokk
Fecha de publicación: 06/Septiembre/2023 a las 16:39
A ver esto:
SELECT Tabla1.Pedido, Tabla1.Importe, DSum("Importe","Tabla1","Pedido='" & [tabla1]![Pedido] & "'") AS Total, Tabla2.ImporteTotal
FROM Tabla1 LEFT JOIN Tabla2 ON Tabla1.Pedido = Tabla2.Pedido
GROUP BY Tabla1.Pedido, Tabla1.Importe, DSum("Importe","Tabla1","Pedido='" & [tabla1]![Pedido] & "'"), Tabla2.ImporteTotal;



-------------
Albert Hostein
Aprendiendo cayendo


Publicado por: paloma
Fecha de publicación: 06/Septiembre/2023 a las 16:59

Genial!!! funcionaaa. Lo he intentado con la mía pero se conoce que la función DSum va más lenta así que tendré que delimitar más mi consulta para que sea más agil

Muuuuuchas gracias!!!  Hug

Pueden cerrar el hilo

Saludos,



Imprimir página | Cerrar ventana