Ricerca…


Unisci le righe della tabella con le righe generate dinamicamente da una cella

CROSS APPLY consente di "unire" le righe da una tabella con le righe generate dinamicamente restituite da una funzione valore di tabella.

Immagina di avere una tabella Company con una colonna che contiene una serie di prodotti (colonna ProductList) e una funzione che analizza questi valori e restituisce un set di prodotti. È possibile selezionare tutte le righe da una tabella Società, applicare questa funzione su una colonna ProductList e "unire" i risultati generati con la riga della società madre:

SELECT *
FROM Companies c 
     CROSS APPLY dbo.GetProductList( c.ProductList ) p

Per ciascuna riga, il valore della cella ProductList verrà fornito alla funzione e la funzione restituirà tali prodotti come un insieme di righe che possono essere uniti alla riga padre.

Unisci le righe della tabella con l'array JSON memorizzato nella cella

CROSS APPLY consente di "unire" le righe da una tabella con la raccolta di oggetti JSON archiviati in una colonna.

Immagina di avere una tabella Company con una colonna che contiene una serie di prodotti (colonna ProductList) formattata come array JSON. La funzione del valore di tabella OPENJSON può analizzare questi valori e restituire l'insieme di prodotti. È possibile selezionare tutte le righe da una tabella Società, analizzare i prodotti JSON con OPENJSON e "unire" i risultati generati con la riga della società madre:

SELECT *
FROM Companies c 
     CROSS APPLY OPENJSON( c.ProductList )
                 WITH ( Id int, Title nvarchar(30), Price money)

Per ciascuna riga, il valore della cella ProductList verrà fornito alla funzione OPENJSON che trasformerà gli oggetti JSON in righe con lo schema definito nella clausola WITH.

Filtra le righe per valori di array

Se si memorizza un elenco di tag in una riga come valori separati da virgola, la funzione STRING_SPLIT consente di trasformare l'elenco di tag in una tabella di valori. CROSS APPLY consente di "unire" i valori analizzati dalla funzione STRING_SPLIT con una riga padre.

Immagina di avere una tabella di prodotti con una colonna che contiene una serie di tag separati da virgole (ad esempio promo, vendite, nuovi). STRING_SPLIT e CROSS APPLY ti consentono di unire le righe di prodotto con i loro tag in modo da poter filtrare i prodotti in base ai tag:

SELECT *
FROM Products p 
     CROSS APPLY STRING_SPLIT( p.Tags, ',' ) tags
WHERE tags.value = 'promo'

Per ogni riga, il valore della cella Tag verrà fornito alla funzione STRING_SPLIT che restituirà i valori dei tag. Quindi puoi filtrare le righe con questi valori.

Nota: la funzione STRING_SPLIT non è disponibile prima di SQL Server 2016



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow