SQL Server - Encontrar los registros diferentes entre 2 tablas

   
Vista:

Encontrar los registros diferentes entre 2 tablas

Publicado por Novato SQL (2 intervenciones) el 01/02/2011 01:42:24
Hola a todos.

Necesito comparar registros de 2 tablas entre si.

Dichas tablas poseen la misma estructura los mismos índices aunque los registros podrían diferir en alguno de sus campos, estas tablas poseen mas de 200 campos.

Se trata de registros que han evolucionado en un proceso, y si bien generalmente todo se mantiene igual, hay veces que algún registro cambia en alguno de sus campos.

Sería algo así:
Tabla_original y Tabla_final, ambas con la misma cantidad de registros, la misma estructura, y los mismos índices, aunque pueden variar en el contenido de sus campos.

Lo que necesito es que el resultado de la consulta me muestre los registros que evolucionaron, es decir los que son diferentes del original (Tabla_original).

Es decir que...

si el campo_48 del registro id_5324 de la Tabla_original difiere
del campo_48 del registro id_5324 de la Tabla_final
(significa que ese registro evolucionó) entonces quiero que me lo muestre.


No se si fui del todo claro en lo que quiero hacer.

Desde ya gracias por responder.
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:Encontrar los registros diferentes entre 2 tabl

Publicado por Leonardo Josué (79 intervenciones) el 01/02/2011 19:31:21
Hola Novato SQL, creo que lo que necesitas hacer es utilizar el operador EXCEPT, de tal manera que te regresa todos los registros existentes en la tabla original que tienen alguna diferencia en cualquiera de sus campos, sería más o menos así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
declare @tabla_original table (campo1 int, campo2 varchar(15))
insert into @tabla_original values (1, 'uno')
insert into @tabla_original values (2, 'dos')
insert into @tabla_original values (3, 'tres')
insert into @tabla_original values (4, 'cuatro')
 
declare @tabla_final table (campo1 int, campo2 varchar(15))
insert into @tabla_final values (3, 'tress')
insert into @tabla_final values (2, 'dos')
insert into @tabla_final values (1, 'uno')
insert into @tabla_final values (44, 'cuatro')
 
select * from @tabla_final
except
select * from @tabla_original

Esta consulta te regresaría lo siguiente:

campo1|campo2
1|tress
44|cuatro

es decir, los registros 2 y 3 son idénticos tanto en la tabla original como en la final, por lo tanto no han sufrido ningún cambio.

El registro 3 existen ambas tablas, pero el campo2 es diferente, ya que en una aparece como "tres" y en otra como "tress". para el caso del registro 44 este no existe en la tabla original a pesar de que hay otro registro con campo2 exactamente igual.

Saludos y espero que esto sea lo que necesitas.
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:Encontrar los registros diferentes entre 2 tabl

Publicado por Novato SQL (2 intervenciones) el 02/02/2011 16:09:02
Hola Leonardo, muchas gracias por responder tan prontamente.

Tu respuesta me sirvió mucho, ya que me dio una punta para investigar en la web... encontré en http://www.tierrafertil.com/index.php?option=com_content&view=article&id=59&Itemid=67
más información acerca del uso de EXCEPT y finalmente pude adaptar perfectamente a mi situación con algunos pequeños ajustes:

select * FROM
(select * from @tabla_final
except
select * from @tabla_original ) as primera

union

select * FROM
(select * from @tabla_original
except
select * from @tabla_final ) as segunda


tu respuesta realmente me sirvio mucho...

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:Encontrar los registros diferentes entre 2 tabl

Publicado por Klinsamnn (1 intervención) el 24/09/2013 21:28:53
Te pasaste gracias eee
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
Imágen de perfil de Abdiel

RE:Encontrar los registros diferentes entre 2 tabl

Publicado por Abdiel (1 intervención) el 29/09/2015 22:29:10
Excelente Justo lo que buscaba en casi nada de tiempo 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:Encontrar los registros diferentes entre 2 tabl

Publicado por Daj (1 intervención) el 15/10/2015 14:45:27
Excelente tu pregunta. Gran generosidad de tu parte por publicar la solución final. Me sirvió mucho Gracias.
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:Encontrar los registros diferentes entre 2 tabl

Publicado por Alcides Rolon alcidesrolon@gmail.com (1 intervención) el 11/08/2015 17:22:32
Era justo lo que estaba buscando, y no pense encontrar tan facil.. muchas gracias
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