Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

necesito emular la funcion DIFFERENCE()

Estas en el tema de necesito emular la funcion DIFFERENCE() en el foro de Oracle en Foros del Web. Hola a todos necesito emular la función DIFFERENCE() en oracle. el objetivo: identificar a los clientes que tienen mas de 2 solicitudes, para eso necesito ...
  #1 (permalink)  
Antiguo 22/07/2008, 17:53
Usuario no validado
 
Fecha de Ingreso: julio-2008
Ubicación: D.F.
Mensajes: 8
Antigüedad: 15 años, 9 meses
Puntos: 0
necesito emular la funcion DIFFERENCE()

Hola a todos

necesito emular la función DIFFERENCE() en oracle.
el objetivo: identificar a los clientes que tienen mas de 2 solicitudes, para eso necesito nombre completo, direccion, fecha nacimiento, codigo postal , etc.

ya intente con la función SOUNDEX pero no lo aceptan, quien la emulación de esta la funcion DIFFERENCE()

¡¡¡¡ ayuda pls !!!
  #2 (permalink)  
Antiguo 22/07/2008, 18:03
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: necesito emular la funcion DIFFERENCE()

Hola que tal,

No me queda claro que es lo que quieres hacer, si me describes un poco más tu requerimiento con gusto te puedo ayudar

Saludos.
  #3 (permalink)  
Antiguo 22/07/2008, 20:57
Usuario no validado
 
Fecha de Ingreso: julio-2008
Ubicación: D.F.
Mensajes: 8
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: necesito emular la funcion DIFFERENCE()

Muchas gracias.

Tengo que encontrar todas las coincidencias posibles para detectar un mismo cliente con diferentes solicitudes tomando su nombre completo, codigo postal, fecha de nacimiento, etc.
el mayor problema es en el segundo nombre y en el segundo apellido, ya que estos normalmente se abrevian o se omiten.
ejemplo: juan carlos perez ramirez 22/04/85 cp 09230 y realiza solicitudes en muchas sucursales como juan c. perez, juan c. perez r. , j.carlos perez .... pero sigue siendo la misma persona. ya lo hice con la funcion soundex concatenando todos los campos y si he encontrado muchas coincidencias pero omite los ejemplos anteriores.
lo que quieren es que yo emule la funcion DIFFERENCE() pero no encuentro el codigo de esta función.

Saludos.

Última edición por chmtinina; 22/07/2008 a las 21:04
  #4 (permalink)  
Antiguo 23/07/2008, 06:59
Usuario no validado
 
Fecha de Ingreso: julio-2008
Ubicación: D.F.
Mensajes: 8
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: necesito emular la funcion DIFFERENCE()

Muchas gracias por responder .

DIFFERENCE (Transact-SQL)

Devuelve un valor entero que indica la diferencia entre los valores de SOUNDEX de dos expresiones de caracteres.

sintaxis: DIFFERENCE ( character_expression , character_expression )

El entero devuelto es el número de caracteres de los valores de SOUNDEX que son iguales. El valor devuelto puede oscilar entre 0 y 4, donde 0 indica una similitud escasa o inexistente, y 4 indica una elevada similitud o los mismos valores.

ejemplo: SELECT SOUNDEX('Green'), SOUNDEX('Greene'), DIFFERENCE('Green','Greene');

nota: esto lo obtuve de la pagina de microsoft, pero no dice mas.

Saludos.
  #5 (permalink)  
Antiguo 23/07/2008, 09:23
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: necesito emular la funcion DIFFERENCE()

Hola que tal,

En Oracle no conozco una Función que te haga lo que hace Difference. Sin Embargo existe Soundex,
que te regresa una cadena y no un número que representa la diferencia entre dos palabras.

Para lo que necesitas tal vez si te sirva el Soundex, solo que en lugar de concatenar todas tus variables
manejalas por separado, es decir compara una por una, ya que el soundex solo actua sobre las cinco primeras
consonantes después de eso ya no tiene efecto.

De hecho para el Soundex sería lo mismo las siguientes dos cadenas

SELECT SOUNDEX('OSCAR HERNANDEZ') FROM DUAL
/


SELECT SOUNDEX('OSCAR HERDISTRITO FEDERAL') FROM DUAL
/


Saludos
  #6 (permalink)  
Antiguo 24/07/2008, 12:25
Usuario no validado
 
Fecha de Ingreso: julio-2008
Ubicación: D.F.
Mensajes: 8
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: necesito emular la funcion DIFFERENCE()

Hola a todos
Con esta consulta estoy obteniendo los clientes duplicados

SELECT SC.FIPAIS,SC.FICANAL, SC.FISUCURSAL, D.FCCALLE, D.FIIDCODIGOPOSTAL, DP.FCPRIMERNOMBRE, DP.FCSEGUNDONOMBRE, DP.FCAPPATERNO, DP.FCAPMATERNO, DP.FDFECHANACIMIENTO, DP.FCRFC,
SOUNDEX(SC.FIPAIS)||SOUNDEX(SC.FICANAL)||SOUNDEX(S C.FISUCURSAL)||
SOUNDEX(D.FCCALLE)||SOUNDEX(D.FIIDCODIGOPOSTAL)||
SOUNDEX(DP.FCPRIMERNOMBRE)||SOUNDEX(DP.FCSEGUNDONO MBRE)||SOUNDEX(DP.FCAPPATERNO)||SOUNDEX(DP.FCAPMAT ERNO)||
SOUNDEX(DP.FDFECHANACIMIENTO)||SOUNDEX(DP.FCRFC) AS SOUNDEX, COUNT(1) AS TOTAL
FROM x SC, y D, z DP
WHERE SC.FIIDSOLICITUD=D.FIIDSOLICITUD
AND SC.FIIDSOLICITUD=DP.FIIDSOLICITUD
GROUP BY SC.FIPAIS,SC.FICANAL, SC.FISUCURSAL, D.FCCALLE, D.FIIDCODIGOPOSTAL, DP.FCPRIMERNOMBRE, DP.FCSEGUNDONOMBRE, DP.FCAPPATERNO,DP.FCAPMATERNO,DP.FDFECHANACIMIENTO ,DP.FCRFC,
SOUNDEX(SC.FIPAIS)||SOUNDEX(SC.FICANAL)||SOUNDEX(S C.FISUCURSAL)||
SOUNDEX(D.FCCALLE)||SOUNDEX(D.FIIDCODIGOPOSTAL)||
SOUNDEX(DP.FCPRIMERNOMBRE)||SOUNDEX(DP.FCSEGUNDONO MBRE)||SOUNDEX(DP.FCAPPATERNO)||SOUNDEX(DP.FCAPMAT ERNO)||
SOUNDEX(DP.FDFECHANACIMIENTO)||SOUNDEX(DP.FCRFC)
HAVING COUNT(1)>1

pero lo que quieren es ubicar a los que se hayan capturado de diferente forma pero que sean una misma persona =( y ahí es donde esta el problema

gracias, espero que me puedan ayudar =(
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:01.