Agrupar cadenas en un solo campo

03/11/2009 - 13:37 por DT | Informe spam
Hola grupo!
Tengo lo siguiente:

CodCli Tipo Pais
1 B CO
1 A EC
2 B CO
3 C PE
3 B BR

Necesito obtener este resultado:
CodCli Tipo Pais
1 A,B CO,EC
2 B CO
3 C,B PE,BR

Muchas gracias por su ayuda!
Tengo SQL 2005
 

Leer las respuestas

#1 Carlos Sacristan
03/11/2009 - 13:52 | Informe spam
Hay varias opciones, pero una de las más típicas es usando FOR XML PATH:


DECLARE @t TABLE ( codcli int ,
tipo char(1) ,
pais char(2) )

INSERT @t
SELECT 1 , 'B' , 'CO'
UNION
SELECT 1 , 'A' , 'EC'
UNION
SELECT 2 , 'B' , 'CO'
UNION
SELECT 3 , 'C' , 'PE'
UNION
SELECT 3 , 'B' , 'BR'

SELECT DISTINCT codcli , stuff ( t.tipos , 1 , 1 , '' ) tipos , stuff (
p.paises , 1 , 1 , '' ) paises
FROM @t cli
CROSS apply ( SELECT ',' + tipo
FROM @t
WHERE cli.codcli = codcli
FOR XML PATH ( '' ) ) t ( tipos )
CROSS apply ( SELECT ',' + pais
FROM @t
WHERE cli.codcli = codcli
FOR XML PATH ( '' ) ) p ( paises )

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"DT" wrote in message
news:
Hola grupo!
Tengo lo siguiente:

CodCli Tipo Pais
1 B CO
1 A EC
2 B CO
3 C PE
3 B BR

Necesito obtener este resultado:
CodCli Tipo Pais
1 A,B CO,EC
2 B CO
3 C,B PE,BR

Muchas gracias por su ayuda!
Tengo SQL 2005

Preguntas similares