Comparación de datos!!
-
sábado, 19 de mayo de 2012 15:22Necesito comparar datos para saber si estan duplicados ejmplo
idCliente|| Nombre1||Nombre2||ApellidoPaterno||ApellidoMaterno
-----------------------------------
1 || Jose ||Francisco|| Perez ||Aguilar
2 || Jose ||Francisco|| Aguilar || Perez
puede ser que el capturista se haya equivocado al ingresar datos y pudiese estar duplicado, entonces necesito sacar una consulta que me arroje estos datos...
intente un select * from tabla where ApellidoPaterno = ApellidoMaterno pero esto me traeria los que son identicos
Saludos.
Todas las respuestas
-
sábado, 19 de mayo de 2012 15:34Moderador
Hola.
¿Y qué te gustaría obtener? ¿Los que sean parecidos o similares también? En ese caso, entraríamos en el ámbito de las búsquedas difusas, un terreno bastante complejo.
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.com
Sígueme en twitter en http://twitter.com/qwalgrande -
sábado, 19 de mayo de 2012 15:51
ok...por ejemplo me capturan estos datos
idCliente Nombre1 Nombre2 Apellido1 Apellido2
1 jose enrique perez medina
2 manuel eduardo gomez franco
3 jose francisco lopez fernandez
4 jose enrique medina perez
5 manuel e franco gomez
pero el cliente 1 y 4 y 2 y 5 podrían ser la misma persona ya que sus apellidos están invertidos,por que se habrán equivocado al capturarlo (capturistas u_u), como traería o como puedo comparar para que me traiga el cliente 1 y 4 y 2 y 5
-
sábado, 19 de mayo de 2012 18:43
Me imagino que fila 5 es 'manuel eduardo franco gomez'. Tengo razon?
Si te entiendo bien:
Select T1.* From MiTabla T1 Inner Join MiTabla T2 On T1.idCliente<>T2.idCliente And T1.Nombre1=T2.Nombre1 And T1.Nombre2=T2.Nombre2 And T1.ApellidoPaterno In (T2.ApellidoPaterno,T2.ApellidoMaterno) And T1.ApellidoMaterno In (T2.ApellidoPaterno,T2.ApellidoMaterno);
Geri Reshef http://gerireshef.wordpress.com
- Marcado como respuesta Eder CostaOwner lunes, 11 de junio de 2012 17:11
-
sábado, 19 de mayo de 2012 19:01
wooo si funciono :D ... y por lo que veo te compara por cada campo...excelente!! lo unica parte que no entiendo es la de
T1.ApellidoPaterno In (T2.ApellidoPaterno,T2.ApellidoMaterno)
si podrías explicarme te lo agradecería muchísimo!
pero en fin muchas gracias!!
-
sábado, 19 de mayo de 2012 22:28Moderador
Hola.
La solución que plantea Geri es una de las muchas posibles combinaciones que tendrías que implementar, 2 registros que tengan igual nombre y cruzados los apellidos. Pero hay otras muchas (diferente nombre, iguales apellidos, o nombre acortado y sin acortar, como "María José" y "Mª José", la acentuación, que se incluya en el apellido paterno ambos apellidos), más las de las búsquedas difusas (que falle una letra en todo el nombre, por ejemplo).
Como ves, la combinatoria es elevadísima. Estas tareas de calidad de datos se pueden afrontar con herramientas específicas para estos fines, como por ejemplo Data Quality Services, incluido en SQL Server 2012 (http://msdn.microsoft.com/es-es/library/ff877917.aspx), existiendo otras en el mercado. En el fondo se trata de identificar patrones por lógica difusa y crear agrupaciones de registros más o menos parecidos, para luego, de forma visual poder discernir entre ellos.
Aun así, puedes implementar un conjunto de sentencias sencillas, como la que Geri sugiere, o incluso algo más elaborado, que te den una aproximación somera al problema. A lo mejor resuelve tu caso. En caso de que no sea así, ten presente estas otras herramientas específicas.
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.com
Sígueme en twitter en http://twitter.com/qwalgrande- Marcado como respuesta Eder CostaOwner lunes, 11 de junio de 2012 17:11
-
domingo, 20 de mayo de 2012 2:25
T1.ApellidoPaterno In (T2.ApellidoPaterno,T2.ApellidoMaterno)
es lo mismo como
(T1.ApellidoPaterno=T2.ApellidoPaterno Or T1.ApellidoPaterno=T2.ApellidoMaterno)
Blog: http://about.me/GeriReshef
-
domingo, 20 de mayo de 2012 3:36:D Geri Muchas gracias me fue de mucha utilidad agradezco tu ayuda...y qwal tienes razón hay infinidad de combinaciones y gracias por la recomendación.. investigare acerca de las herramientas que propones...
-
lunes, 21 de mayo de 2012 14:01
DETECTAR CAMPOS DUCPLICADOS
select distinct campo,COUNT(campo)[CANTIDAD REPETIDA] from tablaGROUP BY campo HAVING COUNT(campo)>1
esto te puede servir para saber la cantidad de veces que se esta repitiendo un campo.
saludos,
Indet
-
lunes, 21 de mayo de 2012 19:23
uuuhh ese ya me lo sabia pero gracias:::Ahora viene la versión Reloaded!! no se si abrir un nuevo tema o seguirle a este..
el caso seria compara datos antes de concentrarlos todos en una sola base ejem:
base1 con el registro
1 - P. Alejandro Perez G.
2 - Henry Armando Loeza Ortiz
base2 con el registro
1 - Pedro A. P. Gomez
2 - Manuel Alejandro Ciau Carrillo
base3 con el registro
1 - Pedro Alejandro Perez Gomez
2- Rossana Beatriz Martinez Diaz
BaseConcentrada
1 - Pedro Alejandro Perez Gomez
2 -Victor Manuel Flores Granados
En este "escenario" el cliente proporciono de esta forma sus datos, los capturistas le dieron de alta así, y ya subí mi base 3 ala concentrada!
ahora un compañero se encarga de subir la base1, como hago que se compare la base1 con la base concentrada! ,
si P. Alejandro Perez G. de la base1 es parecido a Pedro Alejandro Perez Gomez de la concentrada!
pero Henry Armando Loeza Ortiz no se parece a ninguno de los que esta en la concentrada!
si es un cliente nuevo con que se va a comparar??
si es nuevo como hago que se compare al mas parecido??
com podria poner un margen de comparación? osea
base1 P. Alejandro Perez G.
baseConcentrada Pedro Alejandro Perez Gomez
Similitud 85%
imaginado que queden como columnas XD
espero su ayuda o consejos!!
- Editado Manuel MDN lunes, 21 de mayo de 2012 19:25
-
jueves, 07 de junio de 2012 21:32Moderador
Hola.
Lo que buscas es muy complicado y sólo puedo remitirme a mi anterior respuesta en este mismo hilo. Estamos hablando de calidad de datos. En esa línea, te puedo sugerir que revises este link:
http://anastasiosyal.com/POST/2009/01/11/18.ASPX
Ahí se describe una dll de código libre llamada Simmetrics, unas veinte funciones para las búsquedas difusas. Yo las he utilizado y funcionan y muy bien, pero más allá de eso, puede servirte para introducirte en la problemática.
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.com
Sígueme en twitter en http://twitter.com/qwalgrande- Marcado como respuesta Eder CostaOwner lunes, 11 de junio de 2012 17:11

