Sie haben die Frage sowohl mit sql-server als auch mit plsql getaggt, daher werde ich Antworten sowohl für SQL Server als auch für Oracle geben.
In SQL Server können Sie FOR XML PATH
verwenden um mehrere Zeilen miteinander zu verketten:
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;
Siehe SQL Fiddle mit Demo .
In Oracle 11g+ können Sie LISTAGG
verwenden :
select "User",
listagg(department, ',') within group (order by "User") as departments
from yourtable
group by "User"
Siehe SQL-Geige mit Demo
Vor Oracle 11g konnten Sie den wm_concat
verwenden Funktion:
select "User",
wm_concat(department) departments
from yourtable
group by "User"