質問にsql-serverとplsqlの両方のタグを付けたので、SQLServerと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 withDemo を参照してください。 。
Oracle 11g +では、LISTAGG
を使用できます。 :
select "User",
listagg(department, ',') within group (order by "User") as departments
from yourtable
group by "User"
SQL Fiddle withDemo を参照してください。
Oracle 11gより前は、wm_concat
を使用できました。 機能:
select "User",
wm_concat(department) departments
from yourtable
group by "User"