SQL - DUDA URGENTE EN CONSULTA PLEASE!

 
Vista:

DUDA URGENTE EN CONSULTA PLEASE!

Publicado por SPOW (17 intervenciones) el 15/06/2006 15:34:37
HOLA COLEGAS, TENGO UNA GRAN DUDA PARA PODER ELIMINAR UNOS REGISTROS CON RESPECTO A LA INSTRUCCION SQL QUE ESTOY UTILIZANDO, CABE DESTACAR QUE DICHA INSTRUCCION LA ESTOY UTILIZANDO EN EL ANALIZADOR DE CONSULTAS.
EL EJEMPLO DE LO QUE QUIERO HACER ES LO SIGUIENTE:

La tabla que genere tiene los siguientes campos:

Campo1 Campo2 Campo3 Campo4 Campo5
123456 24680 CARLOS MANUEL CARRILLO
24680 123456 CARLOS MANUEL CARRILLO
13579 98765 ANGELA MARIA FERRER
98765 13579 ANGELA MARIA FERRER

LO QUE DESEO EN MI CONSULTA ES PODER ELIMINAR LOS REGISTROS QUE SE ME DUPLICAN PARA QUE DE ESTA MANERA PUEDA QUEDARME DE LA SIGUIENE FORMA:

Campo1 Campo2 Campo3 Campo4 Campo5
123456 24680 CARLOS MANUEL CARRILLO
13579 98765 ANGELA MARIA FERRER

HE EVALUADO UNA SERIE DE CONSULTAS PERO NO HAY FORMA DE QUE ME ARROJE LOS RESULTADOS DESEADOS YA QUE ME ELIMINA TODOS LOS REGISTROS CUANDO HAGO LAS COMPARACIONES. SE QUE HAY PERSONAS MUY PROFESIONALES EN ESTE FORO LO CUAL AGRADECE DE SU AYUDA
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:DUDA URGENTE EN CONSULTA PLEASE!

Publicado por Edgar Quispe Manrique (2 intervenciones) el 15/06/2006 17:22:25
Utiliza una tabla temporal
mas o emnos asi

SELECT
(SELECT TOP 1 CAMPO1 FROM TUTABLA A WHERE A.CAMPO3 = B.CAMPO3 AND A.CAMPO4 = B.CAMPO4 AND A.CAMPO5 = B.CAMPO5 ) AS CAMPO1,
(SELECT TOP 1 CAMPO2 FROM TUTABLA A WHERE A.CAMPO3 = B.CAMPO3 AND A.CAMPO4 = B.CAMPO4 AND A.CAMPO5 = B.CAMPO5) AS CAMPO2,
CAMPO3,
CAMPO4.
CAMPO5
INTO #NUEVA_TABLA
FROM TUTABLA B
GROUP BY CAMPO3, CAMPO4, CAMPO5

DELETE FROM TUTABLA

INSERT INTO TUTABLA SELECT * FROM #NUEVA_TABLA

Antes te recomiendo hagas un bakcup de esa tabla por si las dudas ya que vas a borra todos los datos y no vaya hacer que cometas un error

espero te ayude
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DUDA URGENTE EN CONSULTA PLEASE!

Publicado por Isaías (5072 intervenciones) el 16/06/2006 02:08:43
En caso de que NO puedas hacer DROP a tu tabla fuente, como lo sugiere Edgar, esta seria otra version:

-- este script elimina
-- duplicados por c_a, c_b, ..., c_n
alter table t1
add c1 int not null identity(1, 1)
go

create unique nonclustered index t1_c1_u_nc_idx
on t1 (c1 asc)
go

delete t1
where exists(
select *
from t1 as t2
where
t2.c_a = t1.c_a
t2.c_b = t1.c_b
...
t2.c_n = t1.c_n
and t2.c1 < t1.c1
)

drop index t1_c1_u_nc_idx
go

alter table t1
drop column c1
go
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DUDA URGENTE EN CONSULTA PLEASE!

Publicado por SPOW (17 intervenciones) el 16/06/2006 16:56:16
MUCHAS GRACIAS COLEGA, ESE SCRIPT ME SIRVIO PERFECTAMENTE. SERA DE MUCHA AYUDA PARA OTROS COMPAÑEROS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DUDA URGENTE EN CONSULTA PLEASE!

Publicado por Isaías (5072 intervenciones) el 16/06/2006 20:07:29
De nada SPOW, ese es el objetivo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar