Imprimir página | Cerrar ventana

Registros Repetidos

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=84690
Fecha de impresión: 20/Abril/2024 a las 11:32


Tema: Registros Repetidos
Publicado por: Erick Gamer
Asunto: Registros Repetidos
Fecha de publicación: 04/Septiembre/2019 a las 22:45
Hola cordiales saludos a todos,

Tengo tres tablas unidas con un Inner Join, necesito hacer un conteo del campo "COD" y una sumatoria de toales del campo "VOL"

El detalle que tengo es que el campo COD tiene registros repetidos, y necesito contar el unico registro con su sumatoria de totales. Hay alguna forma de excluir los repetidos en una sola consulta?

SELECT T56W.PLANT_CLUSTER AS CLUSTER, T56W.REPORT_PLANT AS PLANT, 
Count(T56Y.COD) AS QTYCOD, 
Sum(T56W.VOL) AS VOLTOT
FROM (T56W INNER JOIN T56Y ON (T56W.MFG_PLANT_ID = T56Y.MFG_PLANT_ID) 
AND 
(T56W.PART_NBR = T56Y.PART_NBR)) INNER JOIN T57B 
ON 
(T56Y.COD = T57B.COD) 
AND 
(T56Y.MFG_PLANT_ID = T57B.MFG_PLANT_ID)
GROUP BY T56W.PLANT_CLUSTER, T56W.REPORT_PLANT;

Erick Gamer


-------------
Aprendiz de todos, maestro de nadie.



Respuestas:
Publicado por: mounir
Fecha de publicación: 04/Septiembre/2019 a las 22:51
Hola!

Utiliza los predicados https://docs.microsoft.com/es-es/office/vba/access/concepts/structured-query-language/all-distinct-distinctrow-top-predicates-microsoft-access-sql" rel="nofollow - DISTINCT o DISTINCTROW

-------------
Un Saludo.


Publicado por: Erick Gamer
Fecha de publicación: 04/Septiembre/2019 a las 23:03
Me arroja error: "Undefined function 'DISTINCT' in expression

SELECT T56W.PLANT_CLUSTER AS CLUSTER, T56W.REPORT_PLANT AS PLANT, 
DISTINCT(T56Y.COD) AS QTYCOD, 
Sum(T56W.VOL) AS VOLTOT
FROM (T56W INNER JOIN T56Y ON (T56W.MFG_PLANT_ID = T56Y.MFG_PLANT_ID) 
AND 
(T56W.PART_NBR = T56Y.PART_NBR)) INNER JOIN T57B 
ON 
(T56Y.COD = T57B.COD) 
AND 
(T56Y.MFG_PLANT_ID = T57B.MFG_PLANT_ID)
GROUP BY T56W.PLANT_CLUSTER, T56W.REPORT_PLANT;


-------------
Aprendiz de todos, maestro de nadie.


Publicado por: xavi
Fecha de publicación: 04/Septiembre/2019 a las 23:06
El DISTINCT/DISTINCTROW va justo despues del SELECT y antes de los campos.

Añado: tal como se ve perfectamente en el enlace de mounir


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Erick Gamer
Fecha de publicación: 04/Septiembre/2019 a las 23:24
SELECT DISTINCT ([T56Y]![COD]) AS COD, T56W.PLANT_CLUSTER AS CLUSTER, T56W.REPORT_PLANT AS PLANT, 
Sum(T56W.VOL) AS VOLTOT
FROM (T56W INNER JOIN T56Y ON (T56W.MFG_PLANT_ID = T56Y.MFG_PLANT_ID) 
AND 
(T56W.PART_NBR = T56Y.PART_NBR)) INNER JOIN T57B 
ON 
(T56Y.COD = T57B.COD) 
AND 
(T56Y.MFG_PLANT_ID = T57B.MFG_PLANT_ID)
GROUP BY T56W.PLANT_CLUSTER, T56W.REPORT_PLANT;

Funciona muy bien, pero creo no me explique bien lo que necesito es este resultado:
https://ibb.co/Np9CLXr" rel="nofollow">


-------------
Aprendiz de todos, maestro de nadie.


Publicado por: mounir
Fecha de publicación: 04/Septiembre/2019 a las 23:32
Hola!

Cuando son varias tablas creo que lo correcto es utilizar DISTINCTROW, aparte, debes contar el campo "COD", Agrupar por los campos "CLUSTER y PLANTA" , sumar "VO"

Edito para añadir si no te sale con una consulta inténtalo con dos consultas, primero DISTINCTROW y luego agrupas y realizas las cuentas y sumas.

-------------
Un Saludo.


Publicado por: Erick Gamer
Fecha de publicación: 04/Septiembre/2019 a las 23:41
Ya entre en dudas he realizado la consulta tal como me comentas y el resultado es exatamente el mismo que la primer consulta que postee al inicio.

SELECT T56W.PLANT_CLUSTER AS CLUSTER, T56W.REPORT_PLANT AS PLANT, 
Count(T56Y.COD) AS QTYCOD, 
Sum(T56W.VOL) AS VOLTOT
FROM (T56W INNER JOIN T56Y ON (T56W.MFG_PLANT_ID = T56Y.MFG_PLANT_ID) 
AND 
(T56W.PART_NBR = T56Y.PART_NBR)) INNER JOIN T57B 
ON 
(T56Y.COD = T57B.COD) 
AND 
(T56Y.MFG_PLANT_ID = T57B.MFG_PLANT_ID)
GROUP BY T56W.PLANT_CLUSTER, T56W.REPORT_PLANT;


-------------
Aprendiz de todos, maestro de nadie.


Publicado por: mounir
Fecha de publicación: 04/Septiembre/2019 a las 23:54
Hola!

No has hecho nada de lo que te comenté,

Un ejemplo sencillo

http://www.filebig.net/files/gEreBtQcC6" rel="nofollow - http://www.filebig.net/files/gEreBtQcC6

-------------
Un Saludo.


Publicado por: Erick Gamer
Fecha de publicación: 05/Septiembre/2019 a las 00:02
LOL  Perdon Mounir postee la primer consulta

Esta es la que hice con los cambios mencionados.

SELECT DISTINCTROW ([T56Y]![COD]) AS COD, T56W.PLANT_CLUSTER AS CLUSTER, T56W.REPORT_PLANT AS PLANT, 
Sum(T56W.VOL) AS VOLTOT
FROM (T56W INNER JOIN T56Y ON (T56W.MFG_PLANT_ID = T56Y.MFG_PLANT_ID) 
AND 
(T56W.PART_NBR = T56Y.PART_NBR)) INNER JOIN T57B 
ON 
(T56Y.COD = T57B.COD) 
AND 
(T56Y.MFG_PLANT_ID = T57B.MFG_PLANT_ID)
GROUP BY T56W.PLANT_CLUSTER, T56W.REPORT_PLANT;


-------------
Aprendiz de todos, maestro de nadie.


Publicado por: guarracuco
Fecha de publicación: 05/Septiembre/2019 a las 13:16
En la imagen que colocas, los códigos sin distintos. Por eso no agrupa. Deberías colocar aquí una vista de las 3 tablas en diseño y otra con datos para poder ayudarte.


Publicado por: guarracuco
Fecha de publicación: 07/Septiembre/2019 a las 15:13
Erick, pudiste resolver la consulta?

Agrego:
Con la informacion suministrada, poco o nada podemos ayudar. Debes suministrar vista con datos de las 3 tablas.


Publicado por: Erick Gamer
Fecha de publicación: 17/Septiembre/2019 a las 17:39
Perdon por no contestar antes,

La solución correcta fue usar SELECT DISTINCTROW, la duda que me habia nacido era porque la primer consulta posteada y la recomendada por mounir me arrojaban el mismo resultado.
Error no estaba agrupando un campo por ello no miraba la diferencia, corregi y solucionado.

Saludos, pueden cerrar el hilo Muchas Gracias!!!!!Smile

Erick Gamer


-------------
Aprendiz de todos, maestro de nadie.



Imprimir página | Cerrar ventana