SQL STRING_AGG – spojení řádků do jedné hodnoty (concat string)

Nedávno jsem řešil úlohu, když jsem potřeboval v tabulce spojit řádky v nějaké tabulce do 1 string hodnoty. To nebylo u SQL Server ještě nedávno úplně jednoduché, protože narozdíl od třeba mysql neobsahoval speciální funkci k tomu určenou (muselo se na to jít přes příkaz FOR XML PATH). V SQL Server 2017 byla ale nasazena funkce STRING_AGG a s ní je to daleko jednodušší.

Syntaxe funkce STRING_AGG

SELECT
   STRING_AGG (expression, separator) WITHIN GROUP (ORDER BY <order_by_expression_list> [ ASC | DESC ])
FROM <Tabulka>

Funkce má 2 povinné argumenty:

  • expression – sloupec s hodnotami, které se mají spojovat
  • separator – čím mají být hodnoty odděleny

Nepovinná klauzule WITHIN GROUP – pomocí klauzule můžeme hodnoty před spojením uspořádat vzestupně nebo sestupně

Příklad spojení (concatenate) řádků v tabulce do hodnoty (string)

CREATE TABLE Temp.dbo.Biportal_Test (
String VARCHAR(20)
)

INSERT INTO Temp.dbo.Biportal_Test (String)
VALUES
('Text,'),
('který'),
('chci'),
('agregovat'),
('na'),
('hodnotu')

SELECT * FROM Temp.dbo.Biportal_Test

Tabulka:

STRING_AGG - příklad

Převedení řádku tabulky na string:

SELECT STRING_AGG(String, ' ') AS Hodnota
FROM Temp.dbo.Biportal_Test

STRING_AGG - řešení příkladu - agregace řádku do hodnoty

_______________________________________________________________________________________________
Intelligent technologies - podniková řešení a školení
SQL STRING_AGG – spojení řádků do jedné hodnoty (concat string)
Hodnocení

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

This site uses Akismet to reduce spam. Learn how your comment data is processed.