cunsulta de duplicados

31/01/2005 - 16:40 por Kano | Informe spam
Buenas.
Tengo una consulta q me esta trayendo de cabeza. Neceswito hacer una
consulta q me marque los duplicados dejando de los duplicados uno sin
marcar para operar sobre el.
Pongamos por caso q tengo 5 registros con el campo nif duplicado, pues
quiero marcar cuatro de ellos como baja y el sobrante aplicarle el mismo
tratamiento q al resto de no duplicados.
hasta ahora he conseguido localizar los duplicados con esta consulta
SELECT * FROM synclncl
WHERE clnif In
(SELECT clnif FROM synclncl As Tmp GROUP BY clnif HAVING Count(*)>1 )
ORDER BY clnif


pero no se como escoger uno suelto sin tener q hacerlo a bas de
recorrido y busqueda.
q me sugeris??

gracias por adelanado
Kano

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
31/01/2005 - 16:45 | Informe spam
Cual es la clave primaria de esa tabla?


AMB

"Kano" wrote:

Buenas.
Tengo una consulta q me esta trayendo de cabeza. Neceswito hacer una
consulta q me marque los duplicados dejando de los duplicados uno sin
marcar para operar sobre el.
Pongamos por caso q tengo 5 registros con el campo nif duplicado, pues
quiero marcar cuatro de ellos como baja y el sobrante aplicarle el mismo
tratamiento q al resto de no duplicados.
hasta ahora he conseguido localizar los duplicados con esta consulta
SELECT * FROM synclncl
WHERE clnif In
(SELECT clnif FROM synclncl As Tmp GROUP BY clnif HAVING Count(*)>1 )
ORDER BY clnif


pero no se como escoger uno suelto sin tener q hacerlo a bas de
recorrido y busqueda.
q me sugeris??

gracias por adelanado
Kano

Respuesta Responder a este mensaje
#2 ulises
31/01/2005 - 18:47 | Informe spam
En general si las filas duplicadas tienen algunas de sus columnas con
datos diferentes usala para identificarla y marcarla, si todos sus
columnas tienen datos iguales podrías usar una tabla temporal que
tenga un campo identity adicional que permita identificarla y
marcarlas luego volverla a volcar a la tabla original, algo como :

si tienes una tabla tempo que tiene los siguientes datos :

a b marca
1 1 0
1 1 0
1 1 0
2 2 0
2 2 0
2 2 0

podrías hacer :

select * into #tempo from tempo
alter table #tempo add clave int identity(1,1)
go
update #tempo set marca = 1
where clave > ( select min(t2.clave) from #tempo t2 where #tempo.a = a
and #tempo.b = b)
delete from tempo
insert into tempo select a, b, marca from #tempo
select * from tempo

a b marca
1 1 0
1 1 1
1 1 1
2 2 0
2 2 1
2 2 1

(6 row(s) affected)

Saludos,
Ulises




On Mon, 31 Jan 2005 16:40:08 +0100, Kano
wrote:

Buenas.
Tengo una consulta q me esta trayendo de cabeza. Neceswito hacer una
consulta q me marque los duplicados dejando de los duplicados uno sin
marcar para operar sobre el.
Pongamos por caso q tengo 5 registros con el campo nif duplicado, pues
quiero marcar cuatro de ellos como baja y el sobrante aplicarle el mismo
tratamiento q al resto de no duplicados.
hasta ahora he conseguido localizar los duplicados con esta consulta
SELECT * FROM synclncl
WHERE clnif In
(SELECT clnif FROM synclncl As Tmp GROUP BY clnif HAVING Count(*)>1 )
ORDER BY clnif


pero no se como escoger uno suelto sin tener q hacerlo a bas de
recorrido y busqueda.
q me sugeris??

gracias por adelanado
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida