Como depurar tabla SQL Express

01/04/2007 - 13:29 por Carolina Guzman | Informe spam
Hola a todos de nuevo,

Tengo una BBDD en SQL EXPRESS que contiene una tabla con la siguiente
estructura:

PROPIETARIOS

Codigo Int (PK)
Nombre Varchar
NIF Char
Direccion Varchar
CP Char
Localidad Varchar
Provincia Varchar
Telefono1 Numeric
Telefono2 Numeric
Descripcion Varchar
Fecha_Update datetime
Op Char


Mi problema es que tengo varios Propietarios duplicados por nombre, es
decir, que hay varios registros dados de alta con el mismo nombre.:

1 Pedro 19798841h
2 Pedro NULL
3 Pedro NULL
4 Laura NULL
5 Laura 0878776F

Mi pregunta es:
Como puedo depurar la tabla de tal manera que seleccione todos los registros
que tienen el mismo nombre y elimine todos menos uno? ( a ser posible que
además elimine todos los que el campo NIF='NULL')

Os agradezco cualquier ayuda

Un saludo

Carol
 

Leer las respuestas

#1 Alejandro Mesa
01/04/2007 - 22:27 | Informe spam
Carolina,

;with cte
as
(
select *, row_number() over(partition by nombre order by NIF DESC) as rn
from dbo.propietarios
)
delete cte
where rn > 1;

Lo que hace la CTE es asignar un numero consecutivo que comienza desde uno,
para cada grupo de filas de un mismo [nombre]. El numero consecutivo se
asigna dandole un order a cada grupo por la columna [NIF] de mayor a menos
para que los valores NULL esten al final.

Recuerda hacer un backup de la db antes de poner este codigo en practica,
puesto que yo no lo he probado.


AMB


"Carolina Guzman" wrote in message
news:%
Hola a todos de nuevo,

Tengo una BBDD en SQL EXPRESS que contiene una tabla con la siguiente
estructura:

PROPIETARIOS

Codigo Int (PK)
Nombre Varchar
NIF Char
Direccion Varchar
CP Char
Localidad Varchar
Provincia Varchar
Telefono1 Numeric
Telefono2 Numeric
Descripcion Varchar
Fecha_Update datetime
Op Char


Mi problema es que tengo varios Propietarios duplicados por nombre, es
decir, que hay varios registros dados de alta con el mismo nombre.:

1 Pedro 19798841h
2 Pedro NULL
3 Pedro NULL
4 Laura NULL
5 Laura 0878776F

Mi pregunta es:
Como puedo depurar la tabla de tal manera que seleccione todos los
registros que tienen el mismo nombre y elimine todos menos uno? ( a ser
posible que además elimine todos los que el campo NIF='NULL')

Os agradezco cualquier ayuda

Un saludo

Carol





Preguntas similares