Buen día, existen algunas funciones en SQL SERVER 2012
como EXCEPT o INTERSECT que no son muy conocidas o al menos no muy utilizadas,
tal vez la más conocida dentro de este conjunto de funciones es UNION y UNION
ALL, trataré de explicarles un poco más su funcionamiento.
Utilizaré el siguiente script para explicar las funciones:
CREATE TABLE #ventas2011 ( nombre VARCHAR(10) , cantidad INT ) CREATE TABLE #ventas2012 ( nombre VARCHAR(10) , cantidad INT ) INSERT INTO #ventas2011 VALUES( 'ROBERTO' , 130 ) , ( 'DIANE' , 21 ) , ( 'MICHAEL' , 90 ) INSERT INTO #ventas2012 VALUES( 'ROBERTO' , 131 ) , ( 'DIANE' , 21 ) , ( 'JANICE' , 90 ), ( 'DAVID' , 50 ) SELECT * FROM #ventas2011 SELECT * FROM #ventas2012
UNION
Devuelve la combinación de ambas
consultas en un solo resultado, con la restricción que ambas consultas deben contener la misma cantidad de columnas y los tipos de datos de cada una de ellas debe
ser el mismo o similar a manera que se pueda hacer una conversión implícita.
Ejecutando el siguiente query obtenemos:
SELECT * FROM #ventas2011 UNION SELECT * FROM #ventas2012
Si los valores de las columnas
son los mismos en ambas consultas, solo devuelve una sola fila como lo hace en
la imagen anterior para el resultado de DIANE
21 no así para los valores de ROBERTO
ya que en la columna cantidad contiene diferentes valores.
Si aplicamos UNION ALL, nos
traerá todos los resultados de las consultas implicadas.
SELECT * FROM #ventas2011 UNION ALL SELECT * FROM #ventas2012
INTERSECT
Es muy similar al INNER JOIN, con la diferencia que la comparación lo hace por todas las columnas implicadas en las
consultas:
SELECT * FROM #ventas2011 INTERSECT SELECT * FROM #ventas2012
EXCEPT
Muestra únicamente aquellas filas de la consulta de la izquierda de la clausula EXCEPT que no aparezcan en
la consulta de la derecha.
SELECT * FROM #ventas2011 EXCEPT SELECT * FROM #ventas2012
Si invertimos el orden de aparición de las tablas,
observemos el resultado:
Lo importante es conocerlas
porque tal vez nos puedan sacar de un apuro en alguna ocasión sin tener que
hacer un query complicado.
SALUDOS!
COMPARTE ESTA INFORMACION SI TE PARECIO INTERESANTE
0 comentarios:
Publicar un comentario