Buscando la forma más fácil/más escalable de hacer una "diferencia" en SQL Server vea a continuación. Diferencia SQL Server (opuesto a intersect)
Si no puede ver en la imagen, estoy buscando todo lo que no está en la intersección.
he visto una forma de hacerlo:
select * from (
(select 'test1' as a, 1 as b)
union all
(select 'test2' as a , 2 as b union all select 'test1' as a , 1 as b)
)un group by a,b having count(1)=1
pero me temo que lo que sucedería si he utilizado dos conjuntos de gran tamaño (no voy a ser interrogación por Select '' declaraciones constantes, mis preguntas se tira de las tablas reales)
EDIT:.
Posible solución ...
drop table #temp_a;
drop table #temp_b;
go
select * into #temp_a from (
select 1 as num, 'String' as two, 'int'as three, 'purple' as four union all
select 2 as num, 'dog' as two, 'int'as three, 'purple' as four union all
select 3 as num, 'dog' as two, 'int'as three, 'cat' as four) a
select * into #temp_b from (
select 1 as num, 'String' as two, 'decimal'as three, 'purple' as four union all
select 2 as num, 'dog' as two, 'int'as three, 'purple' as four union all
select 3 as num, 'dog' as two, 'int'as three, 'dog' as four) b
SELECT IsNull(a.num, b.num) A,IsNull(a.two, b.two) B, IsNull(a.three, b.three) C,
IsNull(a.four, b.four) D
FROM #temp_a a
FULL OUTER JOIN #temp_b b ON (a.num=b.num AND a.two=b.two and a.three=b.three and a.four=b.four)
WHERE (a.num is null or b.num is null )
RESULTADOS:
1 Cadena int púrpura
3 perro int gato
1 Cadena de diciembre púrpura
3 perro int perro
¿Qué la parte EsNulo lograr? ¿Es solo un medio para "mostrar" lo que falta? – Nix
Para las filas que solo tienen un registro en una de las tablas (las que desea) habrá un nulo en una tabla u otra. Por ejemplo, Table1.A será nulo o Table2.A será nulo para cada fila. El Isnull toma el valor de cualquier lado que tenga un valor. – JohnFx