質問に 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 with Demoを参照してください。
Oracle 11g+ では、以下を使用できますLISTAGG
。
select "User",
listagg(department, ',') within group (order by "User") as departments
from yourtable
group by "User"
デモで SQL Fiddle を参照してください
wm_concat
Oracle 11g より前は、次の関数を使用できました。
select "User",
wm_concat(department) departments
from yourtable
group by "User"