eliminar claves duplicadas selectivamente

05/08/2008 - 21:42 por davidARROBAdavid.com | Informe spam
Estimados señores:

mi caso es este:

tengo una tabla con :

campo1,campo2,campo3,campo4

campo1+campo2+campo3, deben ser la clave unica, pero estan duplicadas,
aunque el campo4 no esta duplicado, justamente debo eliminar de entre todos
los grupos de registros en que se duplican las claves los valores de campo 4
que sean menores, es decir finalmente tiene que quedar un solo registro,
cuya clave sea campo1+campo2+campo3, y el campo 4 el de mayor importe(porque
lo que se almacena alli es un importe), alguien me puede ayudar u orientar
con una consulta SQL, que borre las filas cuyo campo (campo4), sea distinto
del mayor en una ocurrencia de n veces el campo (clave). O tal vez haya que
hacerlo por codigo

Atte.

David
 

Leer las respuestas

#1 Alejandro Mesa
06/08/2008 - 01:01 | Informe spam
Trata:

;with r_set
as
(
select
c1, c2, c3, c4,
row_number() over(partition by c1, c2, c3 order by c4 DESC) as rn
from
t
)
delete t
where rn > 1;
GO


AMB



"davidARROBAdavid.com" wrote:

Estimados señores:

mi caso es este:

tengo una tabla con :

campo1,campo2,campo3,campo4

campo1+campo2+campo3, deben ser la clave unica, pero estan duplicadas,
aunque el campo4 no esta duplicado, justamente debo eliminar de entre todos
los grupos de registros en que se duplican las claves los valores de campo 4
que sean menores, es decir finalmente tiene que quedar un solo registro,
cuya clave sea campo1+campo2+campo3, y el campo 4 el de mayor importe(porque
lo que se almacena alli es un importe), alguien me puede ayudar u orientar
con una consulta SQL, que borre las filas cuyo campo (campo4), sea distinto
del mayor en una ocurrencia de n veces el campo (clave). O tal vez haya que
hacerlo por codigo

Atte.

David




Preguntas similares