Você marcou a pergunta com sql-server e plsql, então fornecerei respostas para SQL Server e Oracle.
No SQL Server você pode usar
FOR XML PATH
para concatenar várias linhas juntas: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;
Consulte SQL Fiddle with Demo .
No Oracle 11g+ você pode usar
LISTAGG
:select "User",
listagg(department, ',') within group (order by "User") as departments
from yourtable
group by "User"
Consulte SQL Fiddle with Demo
Antes do Oracle 11g, você podia usar o
wm_concat
função:select "User",
wm_concat(department) departments
from yourtable
group by "User"