agrupar columnas y agregar otra concatenada

01/03/2006 - 23:22 por newsql05 | Informe spam
hoa a tod@s,

espero poder ser claro, necesitaria saber si es posible agrupar por
algunas columnas y crear otra con la concatenacion de los campos de
otra columna que no forma parte de la agrupacion.

esquematicamente seria

nro1 nro2 titular nro1 nro2 titulares
1 1 A 1 1 A B C
1 1 B 2 2 D E
1 1 C
2 2 D
2 2 E


es como un group by por nr1, nro y en el select usar una funcion de
agregacion para obtener la celda titulares.

podrian darme alguna orientacion al respecto.

saludos cordiales!
diego.-

Preguntas similare

Leer las respuestas

#1 Maxi [Mvp]
02/03/2006 - 00:58 | Informe spam
Hola, lamentablemente en un formato text no puedo ver bien que estas
necesitando. Podrias ponerlo en un archivo .txt?


Saludos

-
Buenos Aires - Argentina
[Microsoft MVP SQL SERVER]
www.sqlgurus.org
"newsql05" wrote in message
news:
hoa a ,

espero poder ser claro, necesitaria saber si es posible agrupar por
algunas columnas y crear otra con la concatenacion de los campos de
otra columna que no forma parte de la agrupacion.

esquematicamente seria

nro1 nro2 titular nro1 nro2 titulares
1 1 A 1 1 A B C
1 1 B 2 2 D E
1 1 C
2 2 D
2 2 E


es como un group by por nr1, nro y en el select usar una funcion de
agregacion para obtener la celda titulares.

podrian darme alguna orientacion al respecto.

saludos cordiales!
diego.-

Respuesta Responder a este mensaje
#2 newsql05
02/03/2006 - 02:07 | Informe spam
solo puedo verlo via web y no me deja adjuntar.
en el google news lo muestra bien pero seguro lo distorsiona en otro
lector de news.

igual hay algunas preguntas similares sobre concatenacion y por ahi
puedo ir probando.

igual por ahi es mas claro con

CREATE TABLE [nro1_nro2_tit] (
[nro1] [smallint] NOT NULL ,
[nro2] [int] NOT NULL ,
[titular] [varchar] (500) COLLATE Modern_Spanish_CI_AI NOT NULL
) ON [PRIMARY]
GO

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(1, 1, 'A')

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(1, 1, 'B')

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(1, 1, 'C')

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(2, 2, 'D')

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(2, 2, 'C')

con eso tengo la tabla de muestra, la idea es pasarla a otra
donde para el mismo nro1 y nro2 tenga otro campo titulares con la
concatenacion de todos los que pertenezcan al mismo.
en el ejemplo anterior quedarian 2 filas con 3 columnas
1 1 abc
2 2 dc

gracias por la molestia.
Respuesta Responder a este mensaje
#3 Maxi
02/03/2006 - 12:50 | Informe spam
Hola, te comprendo. Ahora bien, yo no lo trataria de resolver desde SQL
quizas sea mejor y mucho mas eficiente desde el cliente. Ahora si dispones
de SQL2005 podrias armar una funcion CLR que lo resuelva


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"newsql05" escribió en el mensaje
news:
solo puedo verlo via web y no me deja adjuntar.
en el google news lo muestra bien pero seguro lo distorsiona en otro
lector de news.

igual hay algunas preguntas similares sobre concatenacion y por ahi
puedo ir probando.

igual por ahi es mas claro con

CREATE TABLE [nro1_nro2_tit] (
[nro1] [smallint] NOT NULL ,
[nro2] [int] NOT NULL ,
[titular] [varchar] (500) COLLATE Modern_Spanish_CI_AI NOT NULL
) ON [PRIMARY]
GO

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(1, 1, 'A')

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(1, 1, 'B')

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(1, 1, 'C')

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(2, 2, 'D')

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(2, 2, 'C')

con eso tengo la tabla de muestra, la idea es pasarla a otra
donde para el mismo nro1 y nro2 tenga otro campo titulares con la
concatenacion de todos los que pertenezcan al mismo.
en el ejemplo anterior quedarian 2 filas con 3 columnas
1 1 abc
2 2 dc

gracias por la molestia.

Respuesta Responder a este mensaje
#4 ulises
02/03/2006 - 13:56 | Informe spam
Creo que sería más eficiente desde el cliente, pero en todo caso podrías
crear una función :

create function dbo.concatena ( @nro1 smallint, @nro2 int )
returns varchar(100)
AS
BEGIN
declare @cadena as varchar(100)
select @cadena = ''
select @cadena = @cadena + titular from nro1_nro2_tit
where nro1 = @nro1 and nro2 = @nro2
return (@cadena)
end

y luego realizar :

select nro1, nro2, dbo.concatena(nro1,nro2) from nro1_nro2_tit
group by nro1, nro2

nro1 nro2 column3
1 1 ABC
2 2 DC

pero sería algo lento, aunque si la tabla es pequeña podría ser una
solución.

Saludos,
Ulises

newsql05 wrote:

solo puedo verlo via web y no me deja adjuntar.
en el google news lo muestra bien pero seguro lo distorsiona en otro
lector de news.

igual hay algunas preguntas similares sobre concatenacion y por ahi
puedo ir probando.

igual por ahi es mas claro con

CREATE TABLE [nro1_nro2_tit] (
[nro1] [smallint] NOT NULL ,
[nro2] [int] NOT NULL ,
[titular] [varchar] (500) COLLATE Modern_Spanish_CI_AI NOT NULL
) ON [PRIMARY]
GO

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(1, 1, 'A')

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(1, 1, 'B')

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(1, 1, 'C')

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(2, 2, 'D')

INSERT INTO [tests]..[nro1_nro2_tit]([nro1], [nro2], [titular])
VALUES(2, 2, 'C')

con eso tengo la tabla de muestra, la idea es pasarla a otra
donde para el mismo nro1 y nro2 tenga otro campo titulares con la
concatenacion de todos los que pertenezcan al mismo.
en el ejemplo anterior quedarian 2 filas con 3 columnas
1 1 abc
2 2 dc

gracias por la molestia.
Respuesta Responder a este mensaje
#5 newsql05
02/03/2006 - 22:56 | Informe spam
gracias su ayuda.
al final me sirvio una respuesta de fernando guerrero con algo
parecido.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida