May 31

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