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

Preguntas similare

Leer las respuestas

#6 David
10/08/2008 - 18:45 | Informe spam
Gracias Amigos
muy amables

David Lopardo

"Salvador Ramos" escribió en el
mensaje news:%23QYeZzk%
Hola,

Con el permiso de Alejandro,

Las líneas que empiezan por -- son líneas de comentarios. Las CTE's son
una novedad de SQL Server 2005, por tanto no funcionan en versiones
anteriores, pero si que te funcionará en SQL Server 2008 (que acaba de
salir).

Un saludo
Salvador Ramos
Solid Quality Mentors (http://www.solidq.com)

www.helpdna.net (información sobre SQL Server y Microsoft .Net)
Visita mi nuevo blog: www.sqlserversi.com


"David" <dyn98arARROBAyahoo.com.ar> escribió en el mensaje
news:O70RsIO%
Unoa sla cuestion mas:
así?

gracias.

David


"Alejandro Mesa" escribió en el
mensaje news:
Crrección:

Se debe eliminar usando la CTE.

;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 r_set -- <<<<<<<<--
where rn > 1;
GO


AMB


"Alejandro Mesa" wrote:

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
>
>
>
>










email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida