varianza una que nativas función funciones funcion datos consulta agregado agregada agregación sql sql-server sql-server-2005 tsql

nativas - que es una funcion agregada en sql



¿Cómo devolver múltiples valores en una columna(T-SQL)? (9)

Bueno ... Veo que ya se aceptó una respuesta ... pero creo que deberías ver otras soluciones de todos modos:

/* EXAMPLE */ DECLARE @UserAliases TABLE(UserId INT , Alias VARCHAR(10)) INSERT INTO @UserAliases (UserId,Alias) SELECT 1,''MrX'' UNION ALL SELECT 1,''MrY'' UNION ALL SELECT 1,''MrA'' UNION ALL SELECT 2,''Abc'' UNION ALL SELECT 2,''Xyz'' /* QUERY */ ;WITH tmp AS ( SELECT DISTINCT UserId FROM @UserAliases ) SELECT LEFT(tmp.UserId, 10) + ''/ '' + STUFF( ( SELECT '', ''+Alias FROM @UserAliases WHERE UserId = tmp.UserId FOR XML PATH('''') ) , 1, 2, '''' ) AS [UserId/Alias] FROM tmp /* -- OUTPUT UserId/Alias 1/ MrX, MrY, MrA 2/ Abc, Xyz */

Tengo una tabla UserAliases ( UserId, Alias ) con múltiples alias por usuario. Necesito consultarlo y devolver todos los alias para un usuario dado, el truco es devolverlos todos en una columna.

Ejemplo:

UserId/Alias 1/MrX 1/MrY 1/MrA 2/Abc 2/Xyz

Quiero que el resultado de la consulta tenga el siguiente formato:

UserId/Alias 1/ MrX, MrY, MrA 2/ Abc, Xyz

Gracias.

Estoy usando SQL Server 2005.

ps consulta real T-SQL sería apreciada :)



Lo siento, lea la pregunta equivocada la primera vez. Puedes hacer algo como esto:

declare @result varchar(max) --must "initialize" result for this to work select @result = '''' select @result = @result + alias FROM aliases WHERE username=''Bob''



Puede recorrer las filas con un cursor y anexar a un campo en una tabla temporal, o puede usar la función COALESCE para concatenar los campos.


Puede usar una función con COALESCE.

CREATE FUNCTION [dbo].[GetAliasesById] ( @userID int ) RETURNS varchar(max) AS BEGIN declare @output varchar(max) select @output = COALESCE(@output + '', '', '''') + alias from UserAliases where userid = @userID return @output END GO SELECT UserID, dbo.GetAliasesByID(UserID) FROM UserAliases GROUP BY UserID GO




DECLARE @Str varchar(500) SELECT @Str=COALESCE(@Str,'''') + CAST(ID as varchar(10)) + '','' FROM dbo.fcUser SELECT @Str