locked
Consulta SQL para detectar duplicados

    Question

  • Hola, buen día tengan todos, esperando obtener ayuda de alguno de ustedes les plantemo mi caso.

    Tengo una Tabla con mucha Información de clientes, el sistema posee muchas debilidades, por ejemplo, permite dar de alta el mismo cliente tantas veces sea necesario, sin restringir por ejemplo la entrada de los clientes con el mismo nombre o RFC, el problema es que tengo muchos clientes repetidos muchas veces, sin exagerar tengo como 10,000 clientes, pero muchos estan repetidos, lo que deseo es saber como puedo hacer una instruccion SQL que me mande los clientes repetidos, solo tengo conocimientos básicos de SQL, pero no se como obtener esto, otro es si puedo hacer una instruccion que verifique los que están duplicados y a la vez los elimine. Gacias. Saludos cordiales. El Sistema donde está mi Base de Datos es en Aspel Sae y el manejador de Base de Datos es Paradox
    Monday, April 27, 2009 9:41 PM

Answers

All replies

  • Una forma sencilla de saber los duplicados de una tabla es la siguiente:

    select Cliente, count(Cliente)
    from dbo.Clientes
    group by Cliente
    having count(Cliente) > 1

    Monday, April 27, 2009 10:57 PM
  • Hola que tal.

    Tienes 2 casos en este momento. El primero, necesitas saber tus clientes reales, sin tener los repetidos, y los segundo, eliminar a tus clientes repetidos.

    Pues bien, lo primero que te sugiero es crear una especie de tabla temporal, que tenga las mismas caracteristicas de tu tabla de clientes. Luego mandes a esta tabla todos los usuarios agrupados.

    En SQL Server seria asi

    INSERT INTO tablaTemporal
    select Campo1, Campo2, Campo3, .... (Todos los campos)
    from Clientes
    group by Campo1, Campo2, Campo3, .... (Todos los campos)

    Ya con esto tendrías tu tabla temporal con la información actualizada. Si quieres, puedes eliminar los datos de la primer tabla, y luego cargar dicha tabla con los datos de la tabla temporal, simplemente invirtiendo la consulta, algo asi:

    TRUNCATE TABLE Clientes

    INSERT INTO Clientes
    select Campo1, Campo2, Campo3, .... (Todos los campos)
    from tablaTemporal
    group by Campo1, Campo2, Campo3, .... (Todos los campos)

    Muchos Éxitos con tu desarrollo



    Alberto Rivera
    Friday, May 01, 2009 1:55 AM
  • Revisa este articulo.

    Cómo quitar filas duplicadas de una tabla en SQL Server
    http://support.microsoft.com/kb/139444/es


    Saludos
    Ing. Jose Mariano Alvarez http://blog.josemarianoalvarez.com/ Microsoft MVP SQLTotal Consulting Mi.Correo.es.j0se.marian0.alvarez@gmail.c0m.Corregirl0 (Cambia los ceros por O y saca lo que sobra) Este mensaje se proporciona tal como es, SIN GARANTIAS de ninguna clase
    Tuesday, May 05, 2009 12:53 PM