Duplicacion de registros

21/06/2005 - 21:26 por Franklin Marcano | Informe spam
Tengo el siguiente problema debido a error en la aplicacion, cuando se
intento hacer el cierre del dia donde un procedimiento es disparado y lo que
hace es que lleva data de una tabla a otra tabla de historia, el error fue
que duplico los registros, como hago para borrar ese segundo registro
duplicado.

Asi estan los registros en la tabla

1118-DP001-104 00 380
1118-DP001-104 00 380 ->como hago para
borrar este registro
1118-DP001-104 000 1270
1118-DP001-104 000 1270 ->como hago para borrar
este registro
1118-DP001-104 001 250
1118-DP001-104 001 250 ->como hago para borrar
este registro
1118-DP001-104 002 130
1118-DP001-104 002 130 ->como hago para borrar
este registro
1118-DP001-104 003 250
1118-DP001-104 003 250 ->como hago para borrar
este registro
1118-DP001-104 004 110
1118-DP001-104 004 110 ->como hago para borrar
este registro
1118-DP001-104 005 30
1118-DP001-104 005 30 ->como hago para borrar este
registro
1118-DP001-104 006 60
1118-DP001-104 006 60 ->como hago para borrar este
registro
1118-DP001-104 007 140
1118-DP001-104 007 140 ->como hago para borrar
este registro
1118-DP001-104 008 60
1118-DP001-104 008 60 ->como hago para borrar este
registro
1118-DP001-104 009 50
1118-DP001-104 009 50 ->como hago para borrar este
registro
1118-DP001-104 010 210
1118-DP001-104 010 210->como hago para borrar este
registro
1118-DP001-104 011 250
1118-DP001-104 011 250->como hago para borrar este
registro
1118-DP001-104 012 280
1118-DP001-104 012 280->como hago para borrar este
registro
1118-DP001-104 09 50
1118-DP001-104 09 50->como hago para borrar este
registro
1118-DP001-104 091 200
1118-DP001-104 091 200 ->como hago para borrar
este registro
1118-DP001-104 092 240
1118-DP001-104 092 240->como hago para borrar este
registro
1118-DP001-104 093 60
1118-DP001-104 093 60->como hago para borrar este
registro

como hago para borrar esos registros en lotes ya que tengo que borrar unos
cuantos registros y no quiero hacerlo de forma manual.

Atentamente
Franklin Marcano
 

Leer las respuestas

#1 Alejandro Mesa
21/06/2005 - 22:34 | Informe spam
Franklin,

Para poder diferenciar las filas duplicadas entre si, se necesita una
columna que en conjunta con estas tres, diferencia a una fila de otra, por
ejemplo la fecha y tiempo en que se ingresaron las filas en caso de que el
proceso haya insertado las filas en ejecuciones separadas.

delete t1
where exists(select * from t1 as a where a.c1 = t1.c1 and a.c2 = t1.c2 and
a.c3 = t1.c3 and a.col_fecha_ingreso < t1.col_fecha_ingreso)

si no tienes esa columna que nos permita identificar unicamente a una fila,
entonces puedes adicionar una columna identity para eso, pero no garantiza
que se borrara el ultimo registro ingresado, pues sql server asignara el
valor identity como el decida.

alter table t1
add col_ident int not null identity
go

delete t1
where exists(select * from t1 as a where a.c1 = t1.c1 and a.c2 = t1.c2 and
a.c3 = t1.c3 and a.col_ident < t1.col_ident)
go

alter table t1
drop column col_ident
go


AMB
"Franklin Marcano" wrote:

Tengo el siguiente problema debido a error en la aplicacion, cuando se
intento hacer el cierre del dia donde un procedimiento es disparado y lo que
hace es que lleva data de una tabla a otra tabla de historia, el error fue
que duplico los registros, como hago para borrar ese segundo registro
duplicado.

Asi estan los registros en la tabla

1118-DP001-104 00 380
1118-DP001-104 00 380 ->como hago para
borrar este registro
1118-DP001-104 000 1270
1118-DP001-104 000 1270 ->como hago para borrar
este registro
1118-DP001-104 001 250
1118-DP001-104 001 250 ->como hago para borrar
este registro
1118-DP001-104 002 130
1118-DP001-104 002 130 ->como hago para borrar
este registro
1118-DP001-104 003 250
1118-DP001-104 003 250 ->como hago para borrar
este registro
1118-DP001-104 004 110
1118-DP001-104 004 110 ->como hago para borrar
este registro
1118-DP001-104 005 30
1118-DP001-104 005 30 ->como hago para borrar este
registro
1118-DP001-104 006 60
1118-DP001-104 006 60 ->como hago para borrar este
registro
1118-DP001-104 007 140
1118-DP001-104 007 140 ->como hago para borrar
este registro
1118-DP001-104 008 60
1118-DP001-104 008 60 ->como hago para borrar este
registro
1118-DP001-104 009 50
1118-DP001-104 009 50 ->como hago para borrar este
registro
1118-DP001-104 010 210
1118-DP001-104 010 210->como hago para borrar este
registro
1118-DP001-104 011 250
1118-DP001-104 011 250->como hago para borrar este
registro
1118-DP001-104 012 280
1118-DP001-104 012 280->como hago para borrar este
registro
1118-DP001-104 09 50
1118-DP001-104 09 50->como hago para borrar este
registro
1118-DP001-104 091 200
1118-DP001-104 091 200 ->como hago para borrar
este registro
1118-DP001-104 092 240
1118-DP001-104 092 240->como hago para borrar este
registro
1118-DP001-104 093 60
1118-DP001-104 093 60->como hago para borrar este
registro

como hago para borrar esos registros en lotes ya que tengo que borrar unos
cuantos registros y no quiero hacerlo de forma manual.

Atentamente
Franklin Marcano



Preguntas similares