Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como obter valores de coluna em um valor separado por vírgula


Você marcou a pergunta com sql-server e plsql, então fornecerei respostas para SQL Server e Oracle.

No SQL Server você pode usar FOR XML PATH para concatenar várias linhas juntas:
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;

Consulte SQL Fiddle with Demo .

No Oracle 11g+ você pode usar LISTAGG :
select "User",
  listagg(department, ',') within group (order by "User") as departments
from yourtable
group by "User"

Consulte SQL Fiddle with Demo

Antes do Oracle 11g, você podia usar o wm_concat função:
select "User",
  wm_concat(department) departments
from yourtable
group by "User"