Rows en una sola Col

19/05/2004 - 19:37 por Luis Cejas | Informe spam
Buenas, a ver si se entiende
Tengo una Tabla con éstos valores:
Col1 Col2
AAA A
AAA B
AAA E
AAA R
CCC R
BBB A
BBB R
BBB N
FFF C
FFF A

Y necesito sacar un listado así:
Col1 Col2
AAA ABER
CCC R
BBB ARN
FFF CA

Se podrá llegar a eso?

Preguntas similare

Leer las respuestas

#6 Luis Cejas
19/05/2004 - 22:03 | Informe spam
Ulises, te agradezco enormemente, sin cursor mejor.

Luis


"ulises" escribió en el mensaje
news:f55b01c43dd8$c0656fc0$
También lo puedes resolver creando una función y sin
cursores ni tablas temporales:

create function dbo.obtienesecuencia ( @col1 char(3) )
returns varchar(1000)
as
begin
declare @cadena varchar(1000)
set @cadena = ''
select @cadena = @cadena + col2 from tempo2 where col1 @col1
return(@cadena)
end

select distinct col1, dbo.obtienesecuencia(col1)
from tempo2
order by col1

resultado :

col1
-
AAA ABER
BBB ARN
CCC R
FFF CA

(4 row(s) affected)

Saludos,
Ulises

Otra posibilidad es crear un procedimiento almacenado con


un cursor que te
rellene una tabla temporal y al final devuelves esa tabla


temporal:

create procedure prueba as

create table #prueba (
Col1 varchar(3)
Col2 varchar(100)
)

declare cur cursor for
select Col1, Col2
from TABLA
order by Col1, Col2

set nocount on

declare @col1 varchar(3)
declare @col2 char
declare @ultimacol1 varchar(3) -- para saber cuando


cambiamos de dato de la
columna 1
declare @cadena varchar(100) -- Para la columna 2


compuesta

open cur

fetch cur into @col1, @col2

set @ultimacol1 = @col1
set @cadena = ''

while @@fetch_status = 0
begin
set @cadena = @cadena + @col2
if @ultimacol1 <> @col1
begin
insert into #prueba (Col1, Col2) values


(@col1, @cadena)
siguiente
set @cadena = ''
end
fetch cur into @col1, @col2
end
insert into #prueba (Col1, Col2) values (@col1, @cadena)

close cur
deallocate cur

select Col1, Col2 from #prueba

print 'Te lo he dao mascao ¿eh?'

set nocount off


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida