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



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow