Microsoft SQL Server
Fonctions d'agrégation de chaînes dans SQL Server
Recherche…
Utilisation de STUFF pour l'agrégation de chaînes
Nous avons une table Student avec SubjectId. Ici, il faut concaténer en fonction de subjectId.
Toutes les versions de SQL Server
create table #yourstudent (subjectid int, studentname varchar(10))
insert into #yourstudent (subjectid, studentname) values
( 1 ,'Mary' )
,( 1 ,'John' )
,( 1 ,'Sam' )
,( 2 ,'Alaina')
,( 2 ,'Edward')
select subjectid, stuff(( select concat( ',', studentname) from #yourstudent y where y.subjectid = u.subjectid for xml path('')),1,1, '')
from #yourstudent u
group by subjectid
String_Agg pour l'agrégation de chaînes
Dans le cas de SQL Server 2017 ou de vnext, nous pouvons utiliser STRING_AGG intégré pour cette agrégation. Pour la même table d'étudiant,
create table #yourstudent (subjectid int, studentname varchar(10))
insert into #yourstudent (subjectid, studentname) values
( 1 ,'Mary' )
,( 1 ,'John' )
,( 1 ,'Sam' )
,( 2 ,'Alaina')
,( 2 ,'Edward')
select subjectid, string_agg(studentname, ',') from #yourstudent
group by subjectid
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow