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
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!!!!!
Erick Gamer
------------- Aprendiz de todos, maestro de nadie.
|
|