Registros duplicados

06/05/2008 - 21:08 por Victor M | Informe spam
Tengo la sig consulta para determinar los registros duplicados en una tabla

select numero,count(iniciales) from empleado
group by numero
having count(iniciales)>1
bien lo que quiero es hacer un delete en vez de el select como deberia
hacer la consulta
Saludos

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
06/05/2008 - 22:09 | Informe spam
Victor M,

Cual version de SQL Server usas?

;with dup
as
(
select
numero,
iniciales,
row_number() over(partition by numero order by iniciales) as rn
from
empleado
)
delete cte
where rn > 1;

Asegurate de hacer la prueba en una db que sea la de produccion.

AMB


"Victor M" wrote:

Tengo la sig consulta para determinar los registros duplicados en una tabla

select numero,count(iniciales) from empleado
group by numero
having count(iniciales)>1
bien lo que quiero es hacer un delete en vez de el select como deberia
hacer la consulta
Saludos



Respuesta Responder a este mensaje
#2 Victor M
07/05/2008 - 03:03 | Informe spam
Uso Sql 2000
"Alejandro Mesa" escribió en el
mensaje news:
Victor M,

Cual version de SQL Server usas?

;with dup
as
(
select
numero,
iniciales,
row_number() over(partition by numero order by iniciales) as rn
from
empleado
)
delete cte
where rn > 1;

Asegurate de hacer la prueba en una db que sea la de produccion.

AMB


"Victor M" wrote:

Tengo la sig consulta para determinar los registros duplicados en una
tabla

select numero,count(iniciales) from empleado
group by numero
having count(iniciales)>1
bien lo que quiero es hacer un delete en vez de el select como deberia
hacer la consulta
Saludos



Respuesta Responder a este mensaje
#3 Alejandro Mesa
07/05/2008 - 15:55 | Informe spam
Victor M,

- Tenemos algun grupo de columnas que puedan identificar unicamente una fila?
- Que tan grande es la tabla?

Si la tabla no es muy grande:

alter table dbo.empleados
add sk int not null identity(1, 1)
go

create unique index empleados_sk_u_nc_ix
on dbo.empleados(sk)
go

delete dbo.empleados
where exists (
select *
from dbo.empleados as e
where e.numero = dbo.empleados.numero and e.sk < dbo.empleados.sk
)
go

drop index dbo.empleados.empleados_sk_u_nc_ix
go

alter table dbo.empleados
drop column sk
go

alter table dbo.empleados
with check add constraint uq_empleados_numero unique (numero)
go

AMB

"Victor M" wrote:

Uso Sql 2000
"Alejandro Mesa" escribió en el
mensaje news:
> Victor M,
>
> Cual version de SQL Server usas?
>
> ;with dup
> as
> (
> select
> numero,
> iniciales,
> row_number() over(partition by numero order by iniciales) as rn
> from
> empleado
> )
> delete cte
> where rn > 1;
>
> Asegurate de hacer la prueba en una db que sea la de produccion.
>
> AMB
>
>
> "Victor M" wrote:
>
>> Tengo la sig consulta para determinar los registros duplicados en una
>> tabla
>>
>> select numero,count(iniciales) from empleado
>> group by numero
>> having count(iniciales)>1
>> bien lo que quiero es hacer un delete en vez de el select como deberia
>> hacer la consulta
>> Saludos
>>
>>
>>



Respuesta Responder a este mensaje
#4 Alfredo Novoa
07/05/2008 - 16:16 | Informe spam
On Tue, 6 May 2008 13:08:52 -0600, "Victor M"
wrote:

Tengo la sig consulta para determinar los registros duplicados en una tabla

select numero,count(iniciales) from empleado
group by numero
having count(iniciales)>1
bien lo que quiero es hacer un delete en vez de el select como deberia
hacer la consulta



A lo mejor quieres esto:

delete empleado where numero in (select numero from empleado group by
numero having count(iniciales) > 1)


Saludos
Alfredo
Respuesta Responder a este mensaje
#5 Victor M
07/05/2008 - 17:49 | Informe spam
Gracias a todos por sus respuestas
"Victor M" escribió en el mensaje
news:%
Tengo la sig consulta para determinar los registros duplicados en una
tabla

select numero,count(iniciales) from empleado
group by numero
having count(iniciales)>1
bien lo que quiero es hacer un delete en vez de el select como deberia
hacer la consulta
Saludos

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida