Hola, en esta entrega les mostraré una manera para remover
duplicados en nuestras tablas temporales antes de pasarlos a tablas en
productivo.
Para el caso de este ejemplo, crearé una tabla temporal con
algunos datos de muestra.
IF OBJECT_ID (N'tablaPruebas', N'U') IS NOT NULL DROP TABLE tablaPruebas CREATE TABLE tablaPruebas ( cve TINYINT , nombre VARCHAR(30) , fecha DATE ) INSERT INTO tablaPruebas VALUES( 1, 'PEDRO' , '20130101' ) , ( 1 , 'PEDRO' , '20130101' ) , ( 2 , 'JUAN', '20130403' ) ,( 3, 'LUIS' , '20130521' ) , ( 3 , 'RODRIGO' , '20130525' ) , ( 3 , 'ENRIQUE' , '20130910' ) , ( 4 , 'ALBERTO', '20131014' ) , ( 5 , 'RICARDO', '20131015' )
Suponiendo que para este ejemplo, la llave primaria en la
tabla en productivo es la columna cve podemos
observar que tenemos filas duplicadas:
SELECT * FROM tablaPruebas
Para el ejemplo, se requiere insertar solo las filas más
antiguas o las primeras en ser registradas, para ello utilizamos ROW_NUMBER con
PARTITION BY por la columna cve y
ordenamos por la fecha:
--APLICAMOS ROW_NUMBER SELECT ROW_NUMBER() OVER ( PARTITION BY cve ORDER BY fecha ) as rn, * FROM tablaPruebas --UTILIZAMOS UN SUBQUERY SELECT * FROM ( SELECT ROW_NUMBER() OVER ( PARTITION BY cve ORDER BY fecha ) as rn, * FROM tablaPruebas ) AS x WHERE rn = 1
Espero que les sirva.
SALUDOS!
COMPARTE ESTA INFORMACION SI TE PARECIO INTERESANTE
0 comentarios:
Publicar un comentario