Numeración por grupo

10/11/2004 - 13:19 por jose | Informe spam
tengo dos columnas A y B, A tiene.

1
1
2
2
2
3
4
4

quiero que B se complemete con una numeración de 1 a n, donde reinicie el
conteo cuando A cambia, o sea,

A B
1 1
1 2
2 1
2 2
2 3
3 1
4 1
4 2


como sería la sentencia del update?

gracias!!
 

Leer las respuestas

#1 DiGiTaL
10/11/2004 - 14:14 | Informe spam
mira este ejemplo... lo unico que tendrias que hacer extra es insertar
temporalmente una columna autonumerica en la tabla A para poder hacer el
update..

create table #t(cod int, cont int, autoNum int)

insert into #t(cod, cont, autoNum)
select 1, null, 1
union
select 1, null, 2
union
select 2, null, 3
union
select 2, null, 4
union
select 2, null, 5
union
select 3, null, 6
union
select 4, null, 7
union
select 4, null, 8

DECLARE @cod int
DECLARE @codOLD int
declare @autoNum int
set @autoNum=1
declare @i int
set @i=1
DECLARE rTemp CURSOR FOR

select cod from #t order by cod

OPEN rTemp

FETCH NEXT FROM rTemp
INTO @cod

WHILE @@FETCH_STATUS = 0
BEGIN

if @cod<>@codOLD set @i=1
UPDATE #t SET cont=@i where autoNum=@autoNum
set @codOLD=@cod
set @i=@i+1
set @autoNum=@autoNum+1
FETCH NEXT FROM rTemp
INTO @cod
END

CLOSE rTemp
DEALLOCATE rTemp



select cod, cont from #t
drop table #t

DiGiTaL

"jose" escribió en el mensaje
news:
tengo dos columnas A y B, A tiene.

1
1
2
2
2
3
4
4

quiero que B se complemete con una numeración de 1 a n, donde reinicie el
conteo cuando A cambia, o sea,

A B
1 1
1 2
2 1
2 2
2 3
3 1
4 1
4 2


como sería la sentencia del update?

gracias!!

Preguntas similares