SQL - Registros Duplicados

 
Vista:

Registros Duplicados

Publicado por Marcelo (1 intervención) el 22/11/2006 19:37:15
Hola, quisiera saber si me pueden ayudar con el siguiente problema. Tengo que generar una tabla desde otra en la cual no me inserte los registros que tenga duplicados 2 campos en comun (numero e importe). Es decir, si fuese un solo campo lo resuelvo con un SELECT DISTINCT, pero como hago para contemplar que 2 campos no se repitan.

Ejemplo:

Tabla:
CAMPO1 CAMPO2 CAMPO3 CAMPO4
A A X X
A A X Y
A B X X
A B X Y
A B X X
A C X Y
A C X X
A D X Y

El resultado del query, debe ser el siguiente:

CAMPO1 CAMPO2 CAMPO3 CAMPO4
A A X X
A B X X
A C X Y
A D X Y

Es decir, no me importa lo que salga en el campo3 y campo4. Pero sí que no se repitan los campos 1 y 2.

Ojalá puedan ayudarme ya que es urgente. Saludos, Marcelo.
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:Registros Duplicados

Publicado por Isaías (5072 intervenciones) el 23/11/2006 20:48:12
Intenta

SELECT * FROM tutabla
UNION
SELECT * FROM tutabla
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:Registros Duplicados

Publicado por Josep (5 intervenciones) el 24/11/2006 13:40:14
Yo creo que con el union no va a funcionar, ya que esto sirve para unir tablas. si alguien sabe la solucion que lo ponga, ya que a mi tb me hace falta.
gracias y 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
sin imagen de perfil

RE:Registros Duplicados

Publicado por Liliana (426 intervenciones) el 24/11/2006 17:01:23
Hola Marcelo,
Probá:

SELECT CAMPO1, CAMPO2, MIN(CAMPO3), MIN(CAMPO4)
FROM Tabla
GROUP BY campo1, campo2

Liliana.
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:Registros Duplicados

Publicado por Josep (5 intervenciones) el 27/11/2006 09:33:36
no me funciona con el min ya que se trato de un caracteres y no de enteros para compararlos. Lo que me sale es lo siguiente:
COD NOMBRE DIRECCION CIUDAD PAIS
T00001 Tenerife10 Parque comercial La Laguna España
T00001 Tenerife10 Avda. Francia Valencia España

y yo lo que quiero es que me salga solo la primera linea y no la segunda.
Gracias por todo.
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:Registros Duplicados

Publicado por Josep (5 intervenciones) el 27/11/2006 11:04:10
lo que no quiero es solucionarlo con top 1, ya que me aparece una lista con muchas lineas en las que aparecen el mismo codigo y el mismo nombre para distintas direcciones, ciudades y paises, y lo que quiero es que solo aparezca el codigo y el nombre con la primera direccion, ciudad y pais.
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
sin imagen de perfil

RE:Registros Duplicados

Publicado por Liliana (426 intervenciones) el 27/11/2006 18:10:44
Veamos así:

SELECT T1.COD, T1.NOMBRE, T1.DIRECCION, T1.CIUDAD, T1.PAIS
FROM Tabla T1
INNER JOIN (SELECT COD, NOMBRE, MINIMO = min(DIRECCION + CIUDAD + PAIS)
FROM Tabla
GROUP BY COD, NOMBRE) T2
ON T1.COD = T2.COD and T1.NOMBRE = T2.NOMBRE
WHERE MINIMO = T1.DIRECCION + T1.CIUDAD + T1.PAIS
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:Registros Duplicados

Publicado por Josep (5 intervenciones) el 28/11/2006 09:18:34
Hola Liliana,
te muestro mi consulta a ver si me puedes ayudar, ya que tengo un error de sintaxis y no se donde es

select CLI1.BPCNUM_0 "Cod", CLI1.BPCNAM_0 "Nombre", CLI1.BPCINV_0 "Facturado",CLI1.BPCNAM_0 "NomFac",
DIR.BPAADDLIG_0 "Direccion", DIR.CTY_0 "Ciudad", DIR.CRYNAM_0 "Pais"

from GOSAC.BPCUSTOMER CLI1, GOSAC.BPADDRESS DIR

inner join (select BPCNUM_0, BPCNAM_0, minimo=min(DIR.BPAADDLIG_0 + DIR.CTY_0 + DIR.CRYNAM_0)
from GOSAC.BPCUSTOMER CLI1, GOSAC.BPADDRESS DIR
where CLI1.BPCNUM_0=DIR.BPANUM_0
group by BPCNUM_0, BPCNAM_0) GOSAC.BPCUSTOMER CLI2

on CLI1.BPCNUM_0 = CLI2.BPCNUM_0 AND CLI1.BPCNAM_0 = CLI2.BPCNAM_0

where CLI1.BPCNUM_0=DIR.BPANUM_0 and CLI1.BPCNAM_0 = 'TENERIFE 10'
AND minimo = DIR.BPAADDLIG_0 + DIR.CTY_0 + DIR.CRYNAM_0


muchas gracias por tu ayuda.
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
sin imagen de perfil

RE:Registros Duplicados

Publicado por Liliana (426 intervenciones) el 28/11/2006 14:18:30
Hola,
me tomé el atrevimiento de hacer algunos cambios en las relaciones de las tablas. Aunque no me decís donde te está dando el error, supongo que es en el nombre de la subconsulta:

SELECT CLI1.BPCNUM_0 "Cod", CLI1.BPCNAM_0 "Nombre", CLI1.BPCINV_0 "Facturado",CLI1.BPCNAM_0 "NomFac",
DIR.BPAADDLIG_0 "Direccion", DIR.CTY_0 "Ciudad", DIR.CRYNAM_0 "Pais"
FROM GOSAC.BPCUSTOMER CLI1
INNER JOIN GOSAC.BPADDRESS DIR ON CLI1.BPCNUM_0=DIR.BPANUM_0
INNER JOIN (SELECT BPCNUM_0,
BPCNAM_0,
Minimo = MIN (DIR.BPAADDLIG_0 + DIR.CTY_0 + DIR.CRYNAM_0)
FROM GOSAC.BPCUSTOMER CLI1
INNER JOIN GOSAC.BPADDRESS DIR
ON CLI1.BPCNUM_0=DIR.BPANUM_0
GROUP BY BPCNUM_0, BPCNAM_0) CLI2
ON CLI1.BPCNUM_0 = CLI2.BPCNUM_0 AND CLI1.BPCNAM_0 = CLI2.BPCNAM_0
WHERE CLI1.BPCNAM_0 = 'TENERIFE 10'
AND Minimo = DIR.BPAADDLIG_0 + DIR.CTY_0 + DIR.CRYNAM_0
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:Registros Duplicados

Publicado por Josep (5 intervenciones) el 28/11/2006 16:23:46
Muchisimas gracias Liliana, ahora si que ya funciona correctamete la consulta.
Me ha servido de mucha ayuda.
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