Operador CROSS APPLY
O operador APPLY
têm duas variantes principais o CROSS APPLY
e OUTER APPLY
.
O CROSS APPLY
é utilizado quando se deseja devolver apenas as linhas que correspondem ao resultado da consulta da tabela referenciada.
Sintaxe básica
FROM <Tabela_A> AS <alias>
CROSS APPLY
<Tabela_B> AS <alias>;
Exemplo
Consultar os cinco principais pedidos para cada cliente com base no valor a pagamento por cada cliente.
SELECT C.CustomerID, O.SalesOrderID, O.TotalDue
FROM Sales.Customer AS C
CROSS APPLY (
SELECT TOP 5 SalesOrderID, TotalDue
FROM Sales.SalesOrderHeader
WHERE CustomerID = C.CustomerID
ORDER BY TotalDue DESC
) AS O;
CROSS APPLY ou OUTER APPLY
A escolha entre o operador CROSS APPLY
e OUTER APPLY
depende do resultado desejado.
- Se a intenção é obter todas as linhas da tabela referenciada, independentemente de haver correspondência, então
OUTER APPLY
é a escolha adequada. - Se o objetivo é restringir os resultados apenas às linhas que têm correspondência, então
CROSS APPLY
será mais apropriado.