** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Group by + Join
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoGroup by + Join

 Responder Responder
Autor
Mensaje
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 69
Enlace directo a este mensaje Tema: Group by + Join
    Enviado: 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!!! 
Arriba
dokk Ver desplegable
Habitual
Habitual


Unido: 15/Mayo/2020
Localización: Hendaye
Estado: Sin conexión
Puntos: 152
Enlace directo a este mensaje Enviado: 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
Arriba
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 69
Enlace directo a este mensaje Enviado: 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,
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable