Вие маркирахте въпроса както с sql-server, така и с plsql, така че ще дам отговори както за SQL Server, така и за Oracle.
В SQL Server можете да използвате FOR XML PATH
за свързване на няколко реда заедно:
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;
Вижте SQL Fiddle с демонстрация .
В Oracle 11g+ можете да използвате LISTAGG
:
select "User",
listagg(department, ',') within group (order by "User") as departments
from yourtable
group by "User"
Вижте SQL Fiddle с демонстрация
Преди Oracle 11g можете да използвате wm_concat
функция:
select "User",
wm_concat(department) departments
from yourtable
group by "User"