Otagowałeś pytanie za pomocą sql-server i plsql, więc udzielę odpowiedzi zarówno dla SQL Server, jak i Oracle.
W SQL Server możesz użyć FOR XML PATH
aby połączyć wiele wierszy razem:
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;
Zobacz SQL Fiddle z wersją demonstracyjną .
W Oracle 11g+ możesz użyć LISTAGG
:
select "User",
listagg(department, ',') within group (order by "User") as departments
from yourtable
group by "User"
Zobacz SQL Fiddle z wersją demonstracyjną
Przed Oracle 11g można było użyć wm_concat
funkcja:
select "User",
wm_concat(department) departments
from yourtable
group by "User"