QUITAR DUPLICADOS ACCESS

27/10/2016 - 00:09 por morbid.deth | Informe spam
Buenas tardes, compañeros tengo un problema y no se como resolverlo,
Tengo una tabla sin índice que cargo mediante un Excel, esta tabla esta ordenada por los campos nombre, estatus (activo/inactivo) de A/Z
quiero eliminar los registros duplicados que coincidan en 3 campos (nombre,rfc,nss) y dejar el registro con la fecha mas reciente.
Me podrían apoyar dándome una idea u orientándome.
Muchas Gracias, Saludos.

Preguntas similare

Leer las respuestas

#1 José Mª Fueyo
27/10/2016 - 09:13 | Informe spam
Hola
No nos comentas la versión de Access que utilizas.
Crea una consulta de agregados (en la pantalla de edición de consultas, pulsas el botón con la letra griega sigma - TOTALES). Agrega los campos duplicados y en la fila de "Total" déjalos por "agrupar por". Luego selecciona la fecha y en la fila de total selecciona "Total" selecciona "Max". De esta forma agruparás por los campos repetidos, y por cada fecha te dará el valor máximo.

Salu2,
José Mª Fueyo
Respuesta Responder a este mensaje
#2 dariositito
27/10/2016 - 19:08 | Informe spam
Hola. Mira yo haria una consulta como la siguiente.
Tene en cuenta que:
* con la consulta que muestro se eliminan los duplicados, menos el registro mas actual.
* que deberas cambuar "tutabla" por el nombre de la tabla que contiene los registros y verificar el nombre de los campos para que coincidan con los de esa tabla.

DELETE
t.[Nombre],
t.[Estatus],
t.[rfc],
t.[nss],
t.[Fecha]
FROM TuTabla As t
WHERE (((t.[Nombre]) In (SELECT [Nombre]
FROM TuTabla As Tmp
GROUP BY [Nombre],[Estatus],[rfc],[nss]
HAVING Count(*)>1
And [Estatus] = t.[Estatus]
And [rfc] = t.[rfc]
And [nss] = t.[nss])
)
AND ((t.[Fecha]) Not In (SELECT MAX([Fecha])
FROM TuTabla As tmp
WHERE tmp.[Nombre] = t.[Nombre]
AND tmp.[Estatus]=t.[Estatus]
AND tmp.[nss]= t.[nss]
AND tmp.[rfc]=t.[rfc])
)
);
Respuesta Responder a este mensaje
#3 dariositito
27/10/2016 - 19:08 | Informe spam
Hola. Mira yo haria una consulta como la siguiente.
Tene en cuenta que:
* con la consulta que muestro se eliminan los duplicados, menos el registro mas actual.
* que deberas cambuar "tutabla" por el nombre de la tabla que contiene los registros y verificar el nombre de los campos para que coincidan con los de esa tabla.

DELETE
t.[Nombre],
t.[Estatus],
t.[rfc],
t.[nss],
t.[Fecha]
FROM TuTabla As t
WHERE (((t.[Nombre]) In (SELECT [Nombre]
FROM TuTabla As Tmp
GROUP BY [Nombre],[Estatus],[rfc],[nss]
HAVING Count(*)>1
And [Estatus] = t.[Estatus]
And [rfc] = t.[rfc]
And [nss] = t.[nss])
)
AND ((t.[Fecha]) Not In (SELECT MAX([Fecha])
FROM TuTabla As tmp
WHERE tmp.[Nombre] = t.[Nombre]
AND tmp.[Estatus]=t.[Estatus]
AND tmp.[nss]= t.[nss]
AND tmp.[rfc]=t.[rfc])
)
);
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida