Iver's web place

Navegador de Archivos

Calendario del Blog

February 2012
Sun Mon Tue Wed Thu Fri Sat
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 1 2 3

General

Eliminando registros duplicados

Para no perder la costumbre y aprovechando el bendito insomnio, ahora posteare como emplear dos interesantes funcionalidades que provee SQL Server para borrar registro, primero las Common Table Expression que están disponibles desde la versión 2005 y la combinación de over/partition.


Supongamos que tenemos una tabla con registros duplicados pero sin identificador único. Para esto hagamos una tabla sencilla que represente el escenario:


 
CREATE TABLE Origen
(
        Nombre VARCHAR(15),
        Direccion VARCHAR(200)
)
GO
 

Luego insertamos los registros duplicados:


 
INSERT INTO Origen
VALUES
         ('Pedro Chavez'        ,'Av. Juan Escutia #20')
        ,('Pedro Chavez'        ,'Av. Juan Escutia #20')
        ,('Luis Macias'         ,'Calle San Francisco #44')
        ,('Luis Macias'         ,'Calle San Francisco #44')
        ,('Luis Macias'         ,'Calle San Francisco #44')
        ,('Alejandra Gómez'    ,'Calle Becerra #14')
        ,('Luis Macias'         ,'Calle San Francisco #44')
        ,('Luis Macias'         ,'Calle San Francisco #44')
GO     
 

Ahora podemos ver los registros repetidos con su respectivo identificador haciendo uso de la función ROW_NUMBER()


 
WITH Repetidos (Id, Nombre, Direccion)
AS (
SELECT
        ROW_NUMBER() OVER (PARTITION BY Nombre, Direccion ORDER BY Nombre) AS Id,
        Nombre, Direccion
        FROM Origen
)
SELECT * FROM Repetidos
GO
 

Por último podemos emplear esto para hacer el respectivo delete.


 
WITH Repetidos (Id, Nombre, Direccion)
AS (
SELECT
        ROW_NUMBER() OVER (PARTITION BY Nombre, Direccion ORDER BY Nombre) AS Id,
        Nombre, Direccion
        FROM Origen
)
DELETE FROM Repetidos WHERE Id > 1
GO
 

Cualquier baba de perro, que no!



Para saber más

Trackback URI: http://es.iver.com.mx/index.php/trackback/177

Dejar un comentario

Escribe el código Captcha que estás viendo

Fuentes XML de comentario: RSS | Atom

Estadísticas de visitantes

5
54
27817