Concatenación en SQL Server.

SELECT * FROM [Catalogos].[CategoriasGasto];

SELECT 
	STUFF(
			CAST((SELECT
					CONCAT(',',MAX(Descripcion)) 
				FROM 
					[Catalogos].[CategoriasGasto]					
				GROUP BY 
					Descripcion
				FOR XML PATH('')) AS VARCHAR(8000))
			,1
			,1
			,''
		) AS 'Concatenacion';

Concatenar valores de una columna en SQL Server.

begin
	--Tabla temporal que se crea y llena para simular una tabla de la base de datos.
	declare @TablaOrigen table(Id int, Color varchar(10));

	insert into @TablaOrigen(Id,Color) values(1,'Azul');
	insert into @TablaOrigen(Id,Color) values(2,'Purpura');
	insert into @TablaOrigen(Id,Color) values(3,'Negro');
	insert into @TablaOrigen(Id,Color) values(4,'Cafe');
	insert into @TablaOrigen(Id,Color) values(5,'Violeta');
	insert into @TablaOrigen(Id,Color) values(6,'Naranja');
	insert into @TablaOrigen(Id,Color) values(7,'Rojo');
	insert into @TablaOrigen(Id,Color) values(8,'Verde');
	insert into @TablaOrigen(Id,Color) values(9,'Cian');
	insert into @TablaOrigen(Id,Color) values(10,'Amarillo');

	--Variables utilizadas para la concatenación.
	declare @TablaTemporal table(Elemento varchar(10));
	declare @TotalElementos int=0;
	declare @Elemento varchar(10)='';
	declare @Resultado varchar(max)='';
	declare @EsPrimerElemento bit=1;

	--Se inserta en la tabla temporal '@TablaTemporal' todos los elementos de la tabla origen '@TablaOrigen'.
	insert into @TablaTemporal(Elemento) select Color from @TablaOrigen;

	--Se asigna a la variable '@TotalElementos' el número total de registros almacenados en la tabla temporal '@TablaTemoral'.
	set @TotalElementos= (select count(Elemento) from @TablaTemporal);

	--Se recorre la tabla temporal '@TotalElementos' con el fin de ir concatenando cada uno de sus valores en la variable '@Resultado'.
	while @TotalElementos > 0
		begin				
			set @Elemento= (select top 1 Elemento from @TablaTemporal);

			if(@EsPrimerElemento=1)
				begin
					set @Resultado= @Elemento;
					set @EsPrimerElemento=0;		
				end
			else
				begin
					set @Resultado= concat(@Resultado,',',@Elemento);
				end

			delete top(1) from @TablaTemporal;

			set @TotalElementos= @TotalElementos - 1;
		end

		--Se lleva a cabo la selección de la variable '@Resultado' para visualizar el resultado del proceso de la concatenación.
		select @Resultado as 'Resultado';
end

 Resultado: