Bạn đã gắn thẻ câu hỏi bằng cả sql-server và plsql, vì vậy tôi sẽ cung cấp câu trả lời cho cả SQL Server và Oracle.
Trong SQL Server, bạn có thể sử dụng FOR XML PATH
để nối nhiều hàng với nhau:
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;
Xem SQL Fiddle với Demo .
Trong Oracle 11g +, bạn có thể sử dụng LISTAGG
:
select "User",
listagg(department, ',') within group (order by "User") as departments
from yourtable
group by "User"
Trước Oracle 11g, bạn có thể sử dụng wm_concat
chức năng:
select "User",
wm_concat(department) departments
from yourtable
group by "User"