pregunta anti cursor

09/12/2003 - 22:21 por Cam Acosta | Informe spam
Hola a todos, tengo una tabla mas o menos como la siguiente, y necesito
llenar el campo secuencia (que inicalmente es nulo) que es como un
autonumerico para los registros que pertenecen a un mismo docNo. Existe
alguna forma de hacerlo de forma masiva o toca recurrir a una solución del
tipo cursor...

Gracias,

Camilo Acosta



docNo Cuenta Valor Secuencia
1 123123 4000 1
1 234234 4667 2
1 123423 213423 3
2 234234 234345 1
2 234345 345434 2
3 234234 23434 1
3 233541 234234 2

create table prueba(
docNo int,
Cuenta char(10),
Valor money,
Secuencia int
)
go

INSERT INTO dbo.prueba
VALUES (1, N'123123 ', 4000, NULL)
INSERT INTO dbo.prueba
VALUES (1, N'234234 ', 4667, NULL)
INSERT INTO dbo.prueba
VALUES (1, N'123423 ', 213423, NULL)
INSERT INTO dbo.prueba
VALUES (2, N'234234 ', 234345, NULL)
INSERT INTO dbo.prueba
VALUES (2, N'234345 ', 345434, NULL)
INSERT INTO dbo.prueba
VALUES (3, N'234234 ', 23434, NULL)
INSERT INTO dbo.prueba
VALUES (3, N'23354 ', 234234, NULL)
 

Leer las respuestas

#1 Miguel Egea
09/12/2003 - 23:28 | Informe spam
Quizá esto sirva, aunque no es 100% seguro
asegurate de tener un indice clustered por docno antes de lanzarlo, tendrás
muchas más posibilidades de exito.

declare @id int
declare @doc int
update prueba set Secuencia=@id,@id =case when @doc=docno then @id+1 else 0
end,@doc=docno
select * from prueba


=Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
Aviso de Seguridad
http://www.microsoft.com/spain/tech...9-USER.asp
==
"Cam Acosta" escribió en el mensaje
news:
Hola a todos, tengo una tabla mas o menos como la siguiente, y necesito
llenar el campo secuencia (que inicalmente es nulo) que es como un
autonumerico para los registros que pertenecen a un mismo docNo. Existe
alguna forma de hacerlo de forma masiva o toca recurrir a una solución del
tipo cursor...

Gracias,

Camilo Acosta



docNo Cuenta Valor Secuencia
1 123123 4000 1
1 234234 4667 2
1 123423 213423 3
2 234234 234345 1
2 234345 345434 2
3 234234 23434 1
3 233541 234234 2

create table prueba(
docNo int,
Cuenta char(10),
Valor money,
Secuencia int
)
go

INSERT INTO dbo.prueba
VALUES (1, N'123123 ', 4000, NULL)
INSERT INTO dbo.prueba
VALUES (1, N'234234 ', 4667, NULL)
INSERT INTO dbo.prueba
VALUES (1, N'123423 ', 213423, NULL)
INSERT INTO dbo.prueba
VALUES (2, N'234234 ', 234345, NULL)
INSERT INTO dbo.prueba
VALUES (2, N'234345 ', 345434, NULL)
INSERT INTO dbo.prueba
VALUES (3, N'234234 ', 23434, NULL)
INSERT INTO dbo.prueba
VALUES (3, N'23354 ', 234234, NULL)


Preguntas similares