web-dev-qa-db-fra.com

string_agg pour le serveur sql avant 2017

Quelqu'un peut-il m'aider à faire fonctionner cette requête pour SQL Server 2014. Cela fonctionne sur Postgresql et probablement sur SQL Server 2017. Sur Oracle, c'est listagg au lieu de string_agg.

Voici le sql:

select 
string_agg(t.id,',') AS id
from Tabel t

J'ai vérifié sur le site une option xml à utiliser mais je ne pouvais pas la comprendre.

11
Master Yi

Dans SQL Server avant 2017, vous pouvez effectuer:

select stuff( (select ',' + cast(t.id as varchar(max))
               from tabel t
               for xml path ('')
              ), 1, 1, ''
            );

Le seul but de stuff() est de supprimer la virgule initiale. Le travail est effectué par for xml path.

10
Gordon Linoff