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"