APPLY en #sqlserver

Volvemos a temas de la certificación 70-461 de SQL Server.

El operador APPLY permite invocar una función con valores de tabla para cada fila devuelta por una expresión de tabla externa de una consulta.

Es decir, que es muy parecido a una cláusula de JOIN y permite la unión de dos tablas.

La diferencia es cuando se tiene una expresión con valores de tabla en el lado derecho y desea que esta expresión  se evalúe para cada fila de la  tabla izquierda. El resultante es  el conjunto de  las columnas seleccionadas de la tabla izquierda seguido de todas las columnas de la derecha expresión de tabla.

Hay 2 formas: CROSS APPLY  y OUTER APPLY.

CROSS APPLY es cuando coincide valores en las 2 tablas.

OUTER APPLY devuelve todo y si no coincide devuelve valores NULL.

Se utiliza con el FROM.

Vamos a crear una funcion que nos de los tres principales productos que se venden en función del valor total de las ventas para el cliente.

Captura

Ahora vamos a ver las 2 ultimas ordenes con CROSS APPLY.

Captura

y si ahora camibamos el CROSS por el OUTER.

Captura

A simple vista da lo mismo peo habría que ver el resto de registros.

Para que lo probéis, ir a http://1drv.ms/1crfZRJ

Nuestra bbdd de ejemplo #tsql2012 de #sqlserver pasarla a #DocumentDB

Es un de las novedades que trae la nueva versión de SQL Server 2016.

Captura

Primero hemos ejecutado el script para crear la bbdd tsql2012 y sus respectivas tablas.

Ahora vamos a utilizar una tabla como ejemplo

CapturaBueno ya tendriamos el JSON.

Captura

Ahora toca hacer un copy/paste a DocumentDB.

Despues de crear la BBDd en DocumentDB como TSQL2012, hayr que crear la colección que en este caso los llamaremos como se llamaba en SQL Server HR.Employees.

Captura

Damos en Colecciones y no sale una ventana al lado

CapturaAñadir colección, que seria nombre de la tabla en SQL Server.

Y desues pulsamos en:

Captura

CapturaCrear documento.

Captura

Guardar

Si queremos ver lo que hemos grabado, vamos al explorador de consulta

CapturaPues ya estaria, en un próximo artículo veremos como añadimos documentos de forma masiva.

Diferencias entre INTERSECT e INNER JOIN en #sqlserver

Me llego una pregunta por la opcion de comentarios

CapturaVamos a resolverla.

Intersect recupera los valores iguales en el conjunto de la izda y dcha.
Inner join es igual pero tambien te pilla los duplicados … atencion a los null 😉 por lo que tendriasmos que poner un distinct.

Eso en cuanto a teoría, vamos con la práctica.

Captura

Como podéis ve sale en el inner join repetidos. En este caso no teniamos null.

Si le ponemos distinct al inner join.

Captura

Aquí teneis el archivo para ejecutarlo: http://1drv.ms/1GL5Mfm

Creo que lo he explicado bien, si tu ves otra forma, ya sabes  … ponerla en comentarios

Nuevo #SQLServer 2016 ….

Ya se puede ir probando la nueva versión de SQL.

Se puede descargar desde:

https://technet.microsoft.com/en-gb/evalcenter/mt130694.aspx?f=255&MSPPError=-2147217396

vCaptura

Voy a ir probando con los siguientes artículos que os muestre en este blog.

sql2016

Que mejor forma de evaluar, que ir escribiendo artículos …

sql2016

Vamossssss

#DocumentDB, la bbdd #NoSQL de #Azure

DocumentDb es una base de datos basado en documentos que se ofrece como servicio en Azure.

Es una BBDD no relacional (NoSQL) que almacenan los datos en documentos basados en JSON. Es decir, dentro de DocumentDb hay una serie de colecciones de objetos en formato JSON para almacenar los objetos.

Iremos llevando en este blog las 2 bbdd, MongoDB (Proximamente en Azure también) y DocumentDB.

JSON es un estándar abierto que permite guardar  objetos que pueden ser leído por seres humanos.

Lo primero que tenemos que crear es la bbdd.

Captura

Crear

Captura

Tarda unos 10 minutos.

Captura

Le damos un nombre, en este caso vamos a hacer una Agenda.

En próximo artículo crearemos los documentos.

Espero que os haya gustado.

INTERSECT Y EXCEPT en #sqlserver

Si hacemos un Intersect aparecerá lo común de las 2 tablas, Except lo distinto, es decir,aparecen en la consulta las filas de la primera consulta que no aparecen en la segunda.

Tiene las mismas condiciones que la clausula UNION.

Vamos a ellos

Captura

Vemos al acer el INTERSECT que  nos muestra la información en comun de las tablas, las de clientes y proveedores

Y si ahora cambiamos por EXCEPT.

Captura

Nos mostrará la información que no tienen en común.

Facíl ??? Cualquier pregunta la podeís hacer en el grupo de facebook.

Los ejemplos aqui … http://1drv.ms/1AufamO

Próximo artículo APPLY