Access - a ver

 
Vista:

a ver

Publicado por yL (1 intervención) el 17/05/2006 10:29:23
Buenas tengo un pequeño problema con un informe y no se como puedo solucionarlo

Suponiendo que la consulta del informe sea esta:
SELECT Dia.codigo, Dia.importe, Relacion.C_dia, Relacion.C_repre, Representacion.codigo, representacion.importe
FROM Dia, Relacion, Representacion
WHERE Dia.codigo = Relacion.c_dia AND Relacion.C_repre=Representacion.codigo

Osease estas 3 tablas relacionadas asi:

Dia Relacion Representacion

Codigo <---------- c_dia ___> codigo
Importe c_repre_______| importe

Bueno pues en acces tengo un campo que me suma los importes de dia y de reprsentacion pero claro al hacer la consulta los dias que yo tenga mas de un gasto de representacion me saca mas de una tupla con lo mismo por ejemplo si el dia con codigo 4 tengo un importe de 300 y tengo mas de un codigo de representacion pues el resultado que me saca seria este:

codigo,importe, Representacion.codigo, importe
4, 300, 1 20
4, 300, 2 40

Bueno el problema es que al hacer la suma de las 2 cosas la tabla Dia me suma 600 cuando deberian de ser 300 y la otra suma esta bien. Lo que hago es darle al importe de dia y ponerle "ocultar replicados" pero claro la suma sigue estando mal aunque ya no salgan 2 veces el mismo caso. ¿hay alguna forma para que la suma tambien salga bien?

Muchas gracias y perdon por todo el rollo este ;)
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
Imágen de perfil de Alejandro

Solución para cálculo de suma en consulta con duplicados

Publicado por Alejandro (4142 intervenciones) el 18/07/2023 22:49:44
En la consulta que has proporcionado, estás obteniendo resultados duplicados debido a la relación entre las tablas Dia y Representacion. Para solucionar este problema y obtener la suma correcta, puedes utilizar la función SUM(DISTINCT) en lugar de SUM para evitar la suma de valores duplicados. Aquí te muestro cómo puedes modificar tu consulta:

1
2
3
4
SELECT Dia.codigo, Dia.importe, Relacion.C_dia, Relacion.C_repre, Representacion.codigo, SUM(DISTINCT Representacion.importe) AS suma_importe
FROM Dia, Relacion, Representacion
WHERE Dia.codigo = Relacion.c_dia AND Relacion.C_repre = Representacion.codigo
GROUP BY Dia.codigo, Dia.importe, Relacion.C_dia, Relacion.C_repre, Representacion.codigo

Al utilizar SUM(DISTINCT Representacion.importe), la función SUM solo considerará los valores únicos de la columna "importe" en la tabla Representacion, evitando la duplicación de la suma.

Espero que esta solución te ayude a obtener la suma correcta en tu informe.
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