Prosta konkatenacja napisów w wierszach według ustalonej kolejności (2017+)

 STRING_AGG()   to długo wyczekiwana funkcja. Konkurencja miała już ją od dawna. A my musieliśmy kombinować i stawiać protezy (recursive cte, xml, clr, meh..)

SQL Server 2017 (i Azure) nam wreszcie ją udostępnia. Warto jednak pamiętać, że domyślnie napisy złączane są według kolejności losowej (takiej, z jaką „wpadną w ręce” silnika), sterować zaś nią można przy użyciu polecenia WITHIN GROUP .

Poniżej prosty przykład z separatorem spacji (który oczywiście nie doklei się po ostatniej wartości).

Tworzymy prostą tabelę i wrzucamy do niej słowa w losowej kolejności:

 

Uruchomienie  SELECT * FROM #TEST;  naturalnie pokaże nam kolejność zgodną z indeksem klastrowym (który jest taki sam jak klucz główny)

Złączenie napisów również po PK:

Natomiast użycie WITHIN zadziała zgodnie z oczekiwaniami 🙂

 

Proste, a cieszy ;]

Dodaj komentarz