SQL anidadas

Podemos tener instrucciones SQL dentro de otras instrucciones SQL. A veces esto simplifica las consultas o nos evita tener que hacer vistas adicionales.

 

SQL previa, como si fuera una VISTA

WITH nombre AS (SELECT ...)

SELECT .... FROM nombre

 

SQL en CAMPO CALCULADO y en el WHERE

SELECT campos, (SELECT...) Alias

FROM tablas

WHERE condición AND (SELECT ....)='Valor'

 

Ejemplo:

SELECT
E.Id,E.CodArticulo,A.Nombre
,(SELECT TOP 1 Proceso FROM TB_DEPO_ELEM_PROC WHERE ID=E.ID ORDER BY FechaHora DESC) UltimoProceso

FROM TB_DEPO_ELEM E
JOIN ARTICULOS A ON E.COD_ARTICULO=A.COD_ARTICULO

WHERE E.COD_DEPO_S IS NULL
AND (SELECT TOP 1 Proceso FROM TB_DEPO_ELEM_PROC WHERE ID=E.ID ORDER BY FechaHora DESC)=’Refrigeración’

ORDER BY E.ID