Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment obtenir des valeurs de colonne dans une valeur séparée par des virgules

Vous avez marqué la question avec sql-server et plsql, je vais donc fournir des réponses pour SQL Server et Oracle.

Dans SQL Server, vous pouvez utiliser FOR XML PATH pour concaténer plusieurs lignes :

select distinct t.[user],
  STUFF((SELECT distinct ', ' + t1.department
         from yourtable t1
         where t.[user] = t1.[user]
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,2,'') department
from yourtable t;

Voir SQL Fiddle avec démo .

Dans Oracle 11g+, vous pouvez utiliser LISTAGG :

select "User",
  listagg(department, ',') within group (order by "User") as departments
from yourtable
group by "User"

Voir SQL Fiddle avec démo

Avant Oracle 11g, vous pouviez utiliser le wm_concat fonction :

select "User",
  wm_concat(department) departments
from yourtable
group by "User"