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
 

Leer las respuestas

#1 MAXI
18/11/2004 - 01:22 | Informe spam
Hola Raul, lindo ejercicio me has hecho hacer ;)

CReo que este codigo puede resolver lo que estas buscando.

Lo que no me gusta es el uso de la Tabla temporal, pero buee todo no se
puede ;)

==
select ID1,tx.cantidad,name, CASE WHEN TX.CANTIDAD >10 THEN 'X' ELSE '' END
+
left(#tblOrdenGrupo.name,1) + '00000' + convert(varchar(10),(select count(*)
from #tblOrdenGrupo tl where
tl.id1 <= #tblOrdenGrupo.id1 and left(tl.name,1) =
left(#tblOrdenGrupo.name,1))) XX INTO #tblOrdenGrupo2
from #tblOrdenGrupo inner join (select count(*) as cantidad,left(name,1) as
letra from #tblOrdenGrupo group by left(name,1)) tx
on tx.letra = left(#tblOrdenGrupo.name,1)
order by id1,name


UPDATE #tblOrdenGrupo SET CODE = #tblOrdenGrupo2.XX
FROM #tblOrdenGrupo2 INNER JOIN #tblOrdenGrupo ON
#tblOrdenGrupo2.ID1 = #tblOrdenGrupo.ID1

DROP TABLE #tblOrdenGrupo2

==
Probalo y decime si es lo que estas buscando.

Un abrazo




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"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


Preguntas similares