Microsoft SQL Server
kruis van toepassing
Zoeken…
Voeg tabelrijen samen met dynamisch gegenereerde rijen uit een cel
Met CROSS APPLY kunt u rijen "samenvoegen" vanuit een tabel met dynamisch gegenereerde rijen die worden geretourneerd door een tabelwaardefunctie.
Stel u voor dat u een bedrijfstabel hebt met een kolom die een reeks producten bevat (kolom Productlijst) en een functie die deze waarden ontleedt en een set producten retourneert. U kunt alle rijen uit een bedrijfstabel selecteren, deze functie toepassen op een kolom Productlijst en gegenereerde resultaten "samenvoegen" met de bovenliggende bedrijfsrij:
SELECT *
FROM Companies c
CROSS APPLY dbo.GetProductList( c.ProductList ) p
Voor elke rij wordt de waarde van de ProductList- cel aan de functie verstrekt en de functie retourneert die producten als een set rijen die kunnen worden samengevoegd met de bovenliggende rij.
Voeg tabelrijen samen met JSON-array opgeslagen in cel
Met CROSS APPLY kunt u rijen uit een tabel "samenvoegen" met een verzameling JSON-objecten opgeslagen in een kolom.
Stel je voor dat je een bedrijfstabel hebt met een kolom die een reeks producten bevat (kolom Productlijst) die is opgemaakt als JSON-reeks. De functie OPENJSON-tabelwaarde kan deze waarden parseren en de set producten retourneren. U kunt alle rijen uit een bedrijfstabel selecteren, JSON-producten parseren met OPENJSON en "samengevoegde" resultaten genereren met de bovenliggende bedrijfsrij:
SELECT *
FROM Companies c
CROSS APPLY OPENJSON( c.ProductList )
WITH ( Id int, Title nvarchar(30), Price money)
Voor elke rij wordt de waarde van de ProductList- cel verstrekt aan de OPENJSON-functie waarmee JSON-objecten worden omgezet in rijen met het schema dat is gedefinieerd in de clausule WITH.
Filter rijen op matrixwaarden
Als u een lijst met tags in een rij opslaat als coma-gescheiden waarden, kunt u met de functie STRING_SPLIT de lijst met tags omzetten in een tabel met waarden. Met CROSS APPLY kunt u waarden " parseren " die zijn ontleed door de functie STRING_SPLIT met een bovenliggende rij.
Stel je voor dat je een producttabel hebt met een kolom die een reeks van door komma's gescheiden tags bevat (bijvoorbeeld promo, verkoop, nieuw). STRING_SPLIT en CROSS APPLY stellen je in staat om aan productrijen met hun tags deel te nemen, zodat je producten op tags kunt filteren:
SELECT *
FROM Products p
CROSS APPLY STRING_SPLIT( p.Tags, ',' ) tags
WHERE tags.value = 'promo'
Voor elke rij wordt de waarde van de cel Tags verstrekt aan de functie STRING_SPLIT die de tagwaarden retourneert. Vervolgens kunt u rijen filteren op deze waarden.
Opmerking: de functie STRING_SPLIT is niet beschikbaar vóór SQL Server 2016