SQL Server - Comparar dos tablas

   
Vista:

Comparar dos tablas

Publicado por mario (11 intervenciones) el 12/01/2016 22:59:39
Tengo dos tablas iguales en el mismo servidor pero en distintas bases de datos lo que yo deseo saber es cómo comparar el campo idexp pero únicamente los registros que inicien con el número 5

Este es el código que uso:

SELECT idexp FROM server_sql.expedientes.dbo.pacientes_a t1
WHERE NOT EXISTS
(SELECT * FROM server_sql.prueba.dbo.pacientes_a t2
WHERE t2.idexp COLLATE Modern_Spanish_CI_AS = t1.idexp COLLATE Modern_Spanish_CI_AS AND t1.idexp like '5%')
Captura
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
Imágen de perfil de Isaias

Comparar dos tablas

Publicado por Isaias (3182 intervenciones) el 13/01/2016 00:22:26
Yo no usuaria LIKE en su lugar utilizaria LEFT( t1.idexp,1) = 5

Ahora bien, ¿cual es tu duda?
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

Comparar dos tablas

Publicado por marc85 (11 intervenciones) el 13/01/2016 01:02:37
Gracias por tú sugerencia logré compararlas creando dos vistas y luego comparandolas, ahora lo que requiero es insertar los datos que me mostró como resultado en la tabla que no los contiene, alguna sugerencia?
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 Isaias

Comparar dos tablas

Publicado por Isaias (3182 intervenciones) el 13/01/2016 19:18:31
No entiendo el porque hacer 2 vistas, pero si te va bien a ti.

¿Como insertar?, simple.

INSERT INTO tutabla (campo, campo, campo, campo)
FROM
(Tu query)
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

Comparar dos tablas

Publicado por mario (11 intervenciones) el 13/01/2016 23:51:20
Gracias por tú ayuda pero tuve que usar vistas porque noté que sql server 2000 crea conflicto de intercalación
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 Isaias

Comparar dos tablas

Publicado por Isaias (3182 intervenciones) el 14/01/2016 17:06:51
No es el motor (SQL Server), son las bases que seguramente tienen un COLLATE diferente
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

Comparar dos tablas

Publicado por mario (11 intervenciones) el 14/01/2016 18:44:36
y cómo se hace en ese caso? pregunto para cualquier inconveniente futuro. Este es el error que me manda

/*consulta*/

SELECT *
FROM dbo.view_cocos_expediente AS t1
WHERE (NOT EXISTS
(SELECT *
FROM dbo.view_zona_prueba AS t2
WHERE (t2.IdExp = t1.IdExp and t2.idpac=t1.idpac)))

/*Error*/

Mens. 446, Nivel 16, Estado 9, Línea 1
No se puede resolver el conflicto de intercalación para el operador equal to.
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 Isaias

Comparar dos tablas

Publicado por Isaias (3182 intervenciones) el 14/01/2016 19:16:50
Muy simple, haciendo mencion al COLLATE correspondiente

1
2
3
4
5
6
SELECT *
FROM dbo.view_cocos_expediente AS t1
WHERE (NOT EXISTS
(SELECT *
FROM dbo.view_zona_prueba AS t2
WHERE (t2.IdExp <collate x> = t1.IdExp <collate z> and t2.idpac <collate x> =t1.idpac <collate z>)))

Checa este ejemplo:

1
2
3
4
5
6
7
SELECT
*
FROM
Servidor1.S1A.TA AS Tabla_S1A
INNER JOIN Servidor2.S2B.TB AS Tabla_S2B
ON
Tabla_S1A.CA COLLATE Modern_Spanish_CI_AS = Tabla_S2B.CB COLLATE Modern_Spanish_CI_AS

Si buscas en GOOGLE, encontraras temas como estos:

https://msdn.microsoft.com/es-es/library/ms179886%28v=sql.120%29.aspx

¿Como puedo modificar el COLLATE de mis tablas?

http://blog.jmacoe.com/gestion_ti/base_de_datos/cambia-la-secuencia-de-intercalacion-de-todos-los-campos-en-una-base-de-datos/

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