Subindice para grupos

17/11/2004 - 21:49 por Raul Romero | Informe spam
Buenas tardes compañeros ...

Por favor si alguien me podria ayudar con esta actualizacion si es
que se puede.

Tengo la tabla ...

create table #tblOrdenGrupo
(id1 int identity,
code varchar(5),
name varchar(50))

Cargar registros
insert into #tblOrdenGrupo values ('asd01','Ana')
insert into #tblOrdenGrupo values ('dmo01','Andres')
insert into #tblOrdenGrupo values ('fdg01','Brittany')
insert into #tblOrdenGrupo values ('gft01','Betty')
insert into #tblOrdenGrupo values ('dgh01','Tomas')


Necesito actualizar el codigo a algo como esto, es decir utilizar la
primera letra de la columna "name" para obtener este resultado en
el campo code. Ejs. En el caso que tenga unos 150 "name"s que
comiencen con "A", deberia obtener A0001 ... A0029 ... A0123.


Si tengo mas de 10 repeticiones de "name" (solo la primera letra)
entonces seria algo como ...

50 X0001 Xiao
. . .
. . .
61 X0011 Xen

Muchas gracias por sus respuestas,
Gracias

Raul

Preguntas similare

Leer las respuestas

#11 Liliana Sorrentino
18/11/2004 - 15:41 | Informe spam
Fijate que Betty quedaría antes que Brittany, cuando Raúl lo mostraba
invertido en el resultado esperado.

id1 code name
1 A0001 Ana
2 A0002 Andres
4 B0001 Betty
3 B0002 Brittany
5 T0001 Tomas

Pero tiene a favor que si agregás Alicia, queda dentro del grupo de "A".
id1 code name
6 A0001 Alicia
1 A0002 Ana
2 A0003 Andres
4 B0001 Betty
3 B0002 Brittany
5 T0001 Tomas

Saludos, Li.
"Maxi" escribió en el mensaje
news:#
LI, PORQUE DECIS QUE SON DISTINTOS?


Salu2

Maxi


"Liliana Sorrentino" escribió en el


mensaje
news:e$
> Solo para ejercitar la neurona, probé creando una PK sobre la tabla, los
> resultados son distintos a los que pide Raul, pero al menos deja los


datos
> de name en orden. Otra alternativa. El query queda igual.
>
> alter table #TMP add constraint pk_#TMP primary key (palabra, id)
>
> id code palabra

> -
> 5 A0001 Alejandro
> 1 a0002 ana
> 2 A0003 Andres
> 4 C0001 Carlos
> 3 J0001 Juan
>
> "Maxi" escribió en el mensaje
> news:ubG#
>> ok Liliana, solo lo mencione porque quizas con la forma en que estan
>> ordenados los datos lo pueda aplicar pero si eso cambia el Query va a
> fallar
>> :(
>>
>>
>> Salu2
>>
>> Maxi
>>
>>
>> "Liliana Sorrentino" escribió en el
> mensaje
>> news:%
>> > Sí Maxi, lo vi, pero por los datos que mandaba Raúl de ejemplo di por
>> > sentado que la información estaba ordenada por el primer caracter de
> name,
>> > (ni siquiera por todo el campo, fijate los nombres que empiezan con


B)
> por
>> > el identity que tiene. Supongo que si no es así, nos no hará saber.
>> >
>> > "Maxi" escribió en el mensaje
>> > news:
>> >> Perdon, respondi rapido :(
>> >>
>> >> Liliana, ese codigo tiene un pequeño problema :( mira te paso el
> ejemplo
>> > que
>> >> probe ;)
>> >>
>> >> > >> >>
>> >> create table #tmp (id int identity, code varchar(50),palabra
> varchar(50))
>> >>
>> >> INSERT INTO #TMP (palabra) values ('ana')
>> >> INSERT INTO #TMP (palabra) values ('Andres')
>> >> INSERT INTO #TMP (palabra) values ('Juan')
>> >> INSERT INTO #TMP (palabra) values ('Carlos')
>> >> INSERT INTO #TMP (palabra) values ('Alejandro')
>> >>
>> >> go
>> >>
>> >> DECLARE @letra char, @numero smallint
>> >> SET @numero=1
>> >>
>> >> UPDATE p SET @numero = CASE @letra WHEN SUBSTRING(palabra,1,1) THEN
>> > @numero
>> >> + 1
>> >> ELSE 1 END,
>> >> @letra = SUBSTRING(palabra,1,1),
>> >> code = @letra + RIGHT( '0000' + CAST(@numero AS
>> >> VARCHAR ),
>> >> 4)
>> >> FROM #tmp p
>> >> GO
>> >>
>> >> select * from #tmp
>> >>
>> >> ==> >> >>
>> >>
>> >>
>> >>
>> >>
>> >> Salu2
>> >>
>> >> Maxi
>> >>
>> >>
>> >> "Liliana Sorrentino" escribió en el
>> > mensaje
>> >> news:
>> >> > Hola Raul,
>> >> > Tal vez te sirva este query, basado en un ejemplo de Miguel Egea.
>> >> > Saludos, Liliana.
>> >> >
>> >> > DECLARE @letra char, @numero smallint
>> >> > SET @numero=1
>> >> >
>> >> > UPDATE p SET @numero = CASE @letra WHEN SUBSTRING(name,1,1) THEN
>> >> > @numero
>> > +
>> >> > 1
>> >> > ELSE 1 END,
>> >> > @letra = SUBSTRING(name,1,1),
>> >> > code = @letra + RIGHT( '0000' + CAST(@numero AS
> VARCHAR ),
>> > 4)
>> >> > FROM #tblOrdenGrupo p
>> >> > GO
>> >> >
>> >> > SELECT * FROM #tblOrdenGrupo
>> >> >
>> >> > "Raul Romero" escribió en el mensaje
>> >> > news:
>> >> >> Buenas tardes compañeros ...
>> >> >>
>> >> >> Por favor si alguien me podria ayudar con esta actualizacion si


es
>> >> >> que se puede.
>> >> >>
>> >> >> Tengo la tabla ...
>> >> >>
>> >> >> create table #tblOrdenGrupo
>> >> >> (id1 int identity,
>> >> >> code varchar(5),
>> >> >> name varchar(50))
>> >> >>
>> >> >> Cargar registros
>> >> >> insert into #tblOrdenGrupo values ('asd01','Ana')
>> >> >> insert into #tblOrdenGrupo values ('dmo01','Andres')
>> >> >> insert into #tblOrdenGrupo values ('fdg01','Brittany')
>> >> >> insert into #tblOrdenGrupo values ('gft01','Betty')
>> >> >> insert into #tblOrdenGrupo values ('dgh01','Tomas')
>> >> >>
>> >> >>
>> >> >> Necesito actualizar el codigo a algo como esto, es decir utilizar
>> >> >> la
>> >> >> primera letra de la columna "name" para obtener este resultado en
>> >> >> el campo code. Ejs. En el caso que tenga unos 150 "name"s que
>> >> >> comiencen con "A", deberia obtener A0001 ... A0029 ... A0123.
>> >> >>
>> >> >>
>> >> >> Si tengo mas de 10 repeticiones de "name" (solo la primera letra)
>> >> >> entonces seria algo como ...
>> >> >>
>> >> >> 50 X0001 Xiao
>> >> >> . . .
>> >> >> . . .
>> >> >> 61 X0011 Xen
>> >> >>
>> >> >> Muchas gracias por sus respuestas,
>> >> >> Gracias
>> >> >>
>> >> >> Raul
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >>
>> >>
>> >>
>> >> Outgoing mail is certified Virus Free.
>> >> Checked by AVG anti-virus system (http://www.grisoft.com).
>> >> Version: 6.0.795 / Virus Database: 539 - Release Date: 12/11/2004
>> >>
>> >>
>> >
>> >
>>
>>
>>
>> Outgoing mail is certified Virus Free.
>> Checked by AVG anti-virus system (http://www.grisoft.com).
>> Version: 6.0.795 / Virus Database: 539 - Release Date: 12/11/2004
>>
>>
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.795 / Virus Database: 539 - Release Date: 12/11/2004


Respuesta Responder a este mensaje
#12 Maxi
18/11/2004 - 15:48 | Informe spam
Si correcto! es cuestion de evaluar que queda mejor :)

Por lo menos nuestro amigo se fue con 3 soluciones distintas :)


Salu2

Maxi


"Liliana Sorrentino" escribió en el mensaje
news:
Fijate que Betty quedaría antes que Brittany, cuando Raúl lo mostraba
invertido en el resultado esperado.

id1 code name
1 A0001 Ana
2 A0002 Andres
4 B0001 Betty
3 B0002 Brittany
5 T0001 Tomas

Pero tiene a favor que si agregás Alicia, queda dentro del grupo de "A".
id1 code name
6 A0001 Alicia
1 A0002 Ana
2 A0003 Andres
4 B0001 Betty
3 B0002 Brittany
5 T0001 Tomas

Saludos, Li.
"Maxi" escribió en el mensaje
news:#
LI, PORQUE DECIS QUE SON DISTINTOS?


Salu2

Maxi


"Liliana Sorrentino" escribió en el


mensaje
news:e$
> Solo para ejercitar la neurona, probé creando una PK sobre la tabla,
> los
> resultados son distintos a los que pide Raul, pero al menos deja los


datos
> de name en orden. Otra alternativa. El query queda igual.
>
> alter table #TMP add constraint pk_#TMP primary key (palabra, id)
>
> id code palabra

> -
> 5 A0001 Alejandro
> 1 a0002 ana
> 2 A0003 Andres
> 4 C0001 Carlos
> 3 J0001 Juan
>
> "Maxi" escribió en el mensaje
> news:ubG#
>> ok Liliana, solo lo mencione porque quizas con la forma en que estan
>> ordenados los datos lo pueda aplicar pero si eso cambia el Query va a
> fallar
>> :(
>>
>>
>> Salu2
>>
>> Maxi
>>
>>
>> "Liliana Sorrentino" escribió en el
> mensaje
>> news:%
>> > Sí Maxi, lo vi, pero por los datos que mandaba Raúl de ejemplo di
>> > por
>> > sentado que la información estaba ordenada por el primer caracter de
> name,
>> > (ni siquiera por todo el campo, fijate los nombres que empiezan con


B)
> por
>> > el identity que tiene. Supongo que si no es así, nos no hará saber.
>> >
>> > "Maxi" escribió en el mensaje
>> > news:
>> >> Perdon, respondi rapido :(
>> >>
>> >> Liliana, ese codigo tiene un pequeño problema :( mira te paso el
> ejemplo
>> > que
>> >> probe ;)
>> >>
>> >> >> >> >>
>> >> create table #tmp (id int identity, code varchar(50),palabra
> varchar(50))
>> >>
>> >> INSERT INTO #TMP (palabra) values ('ana')
>> >> INSERT INTO #TMP (palabra) values ('Andres')
>> >> INSERT INTO #TMP (palabra) values ('Juan')
>> >> INSERT INTO #TMP (palabra) values ('Carlos')
>> >> INSERT INTO #TMP (palabra) values ('Alejandro')
>> >>
>> >> go
>> >>
>> >> DECLARE @letra char, @numero smallint
>> >> SET @numero=1
>> >>
>> >> UPDATE p SET @numero = CASE @letra WHEN SUBSTRING(palabra,1,1)
>> >> THEN
>> > @numero
>> >> + 1
>> >> ELSE 1 END,
>> >> @letra = SUBSTRING(palabra,1,1),
>> >> code = @letra + RIGHT( '0000' + CAST(@numero AS
>> >> VARCHAR ),
>> >> 4)
>> >> FROM #tmp p
>> >> GO
>> >>
>> >> select * from #tmp
>> >>
>> >> ==>> >> >>
>> >>
>> >>
>> >>
>> >>
>> >> Salu2
>> >>
>> >> Maxi
>> >>
>> >>
>> >> "Liliana Sorrentino" escribió en
>> >> el
>> > mensaje
>> >> news:
>> >> > Hola Raul,
>> >> > Tal vez te sirva este query, basado en un ejemplo de Miguel Egea.
>> >> > Saludos, Liliana.
>> >> >
>> >> > DECLARE @letra char, @numero smallint
>> >> > SET @numero=1
>> >> >
>> >> > UPDATE p SET @numero = CASE @letra WHEN SUBSTRING(name,1,1) THEN
>> >> > @numero
>> > +
>> >> > 1
>> >> > ELSE 1 END,
>> >> > @letra = SUBSTRING(name,1,1),
>> >> > code = @letra + RIGHT( '0000' + CAST(@numero AS
> VARCHAR ),
>> > 4)
>> >> > FROM #tblOrdenGrupo p
>> >> > GO
>> >> >
>> >> > SELECT * FROM #tblOrdenGrupo
>> >> >
>> >> > "Raul Romero" escribió en el mensaje
>> >> > news:
>> >> >> Buenas tardes compañeros ...
>> >> >>
>> >> >> Por favor si alguien me podria ayudar con esta actualizacion si


es
>> >> >> que se puede.
>> >> >>
>> >> >> Tengo la tabla ...
>> >> >>
>> >> >> create table #tblOrdenGrupo
>> >> >> (id1 int identity,
>> >> >> code varchar(5),
>> >> >> name varchar(50))
>> >> >>
>> >> >> Cargar registros
>> >> >> insert into #tblOrdenGrupo values ('asd01','Ana')
>> >> >> insert into #tblOrdenGrupo values ('dmo01','Andres')
>> >> >> insert into #tblOrdenGrupo values ('fdg01','Brittany')
>> >> >> insert into #tblOrdenGrupo values ('gft01','Betty')
>> >> >> insert into #tblOrdenGrupo values ('dgh01','Tomas')
>> >> >>
>> >> >>
>> >> >> Necesito actualizar el codigo a algo como esto, es decir
>> >> >> utilizar
>> >> >> la
>> >> >> primera letra de la columna "name" para obtener este resultado
>> >> >> en
>> >> >> el campo code. Ejs. En el caso que tenga unos 150 "name"s que
>> >> >> comiencen con "A", deberia obtener A0001 ... A0029 ... A0123.
>> >> >>
>> >> >>
>> >> >> Si tengo mas de 10 repeticiones de "name" (solo la primera
>> >> >> letra)
>> >> >> entonces seria algo como ...
>> >> >>
>> >> >> 50 X0001 Xiao
>> >> >> . . .
>> >> >> . . .
>> >> >> 61 X0011 Xen
>> >> >>
>> >> >> Muchas gracias por sus respuestas,
>> >> >> Gracias
>> >> >>
>> >> >> Raul
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >>
>> >>
>> >>
>> >> Outgoing mail is certified Virus Free.
>> >> Checked by AVG anti-virus system (http://www.grisoft.com).
>> >> Version: 6.0.795 / Virus Database: 539 - Release Date: 12/11/2004
>> >>
>> >>
>> >
>> >
>>
>>
>>
>> Outgoing mail is certified Virus Free.
>> Checked by AVG anti-virus system (http://www.grisoft.com).
>> Version: 6.0.795 / Virus Database: 539 - Release Date: 12/11/2004
>>
>>
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.795 / Virus Database: 539 - Release Date: 12/11/2004











Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.795 / Virus Database: 539 - Release Date: 12/11/2004
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida