Discussion:
QUITAR DUPLICADOS ACCESS
(demasiado antiguo para responder)
m***@gmail.com
2016-10-26 22:09:07 UTC
Permalink
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.
José Mª Fueyo
2016-10-27 07:13:20 UTC
Permalink
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
d***@gmail.com
2016-10-27 17:08:33 UTC
Permalink
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])
)
);
d***@gmail.com
2016-10-27 17:08:33 UTC
Permalink
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])
)
);

Continúe leyendo en narkive:
Loading...