sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo obtener valores de columna en un valor separado por comas

Etiquetó la pregunta con sql-server y plsql, por lo que proporcionaré respuestas tanto para SQL Server como para Oracle.

En SQL Server puede usar FOR XML PATH para concatenar varias filas 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 con demostración .

En Oracle 11g+ puede usar LISTAGG :

select "User",
  listagg(department, ',') within group (order by "User") as departments
from yourtable
group by "User"

Consulte SQL Fiddle con demostración

Antes de Oracle 11g, podía usar wm_concat función:

select "User",
  wm_concat(department) departments
from yourtable
group by "User"