Saltar al contenido

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

Basta ya de buscar por otras páginas ya que has llegado al sitio perfecto, poseemos la solución que buscas y sin problemas.

Solución:

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

En SQL Server puedes 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+ puedes usar LISTAGG:

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

Ver SQL Fiddle con demostración

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

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

En Sql Server puedes usarlo.

DECLARE @UserMaster TABLE( 

    UserID INT NOT NULL, 

    UserName varchar(30) NOT NULL 

); 

INSERT INTO @UserMaster VALUES (1,'Rakesh')

INSERT INTO @UserMaster VALUES (2,'Ashish')

INSERT INTO @UserMaster VALUES (3,'Sagar')

SELECT * FROM @UserMaster

DECLARE @CSV VARCHAR(MAX) 

SELECT @CSV = COALESCE(@CSV + ', ', '') + UserName from @UserMaster 

SELECT @CSV AS Result

MYSQL: para obtener valores de columna como un valor separado por comas, use GROUP_CONCAT( ) funcionan como

GROUP_CONCAT(  `column_name` )

por ejemplo

SELECT GROUP_CONCAT(  `column_name` ) 
FROM  `table_name` 
WHERE 1 
LIMIT 0 , 30

Comentarios y valoraciones del artículo

Más adelante puedes encontrar las críticas de otros desarrolladores, tú aún eres capaz dejar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *