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
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
- 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
A lo mejor quieres esto:
delete empleado where numero in (select numero from empleado group by
numero having count(iniciales) > 1)
Saludos
Alfredo
si tiene
Dato
1
1
2
quiere quedarse con
Dato
1
2
Al parecer no se puede en SS2000 con una sola instruccion y la
solución de Alejandro Mesa es la solución, incluso para tablas
grandes.
Atte.
Penta.