Actualización en una sentencia SQL

11/08/2003 - 13:26 por Carmen | Informe spam
Tengo una tabla de obras y contratos por obra . Para cada obra quiero
renumerar sus contrato comenzando por 1. ¿Hay alguna forma de hacer esto en
una sentencia SQL sin tener que usar un cursor?

Muchas gracias

Preguntas similare

Leer las respuestas

#1 Miguel Egea
11/08/2003 - 14:25 | Informe spam
Si tu clave de contrato es clustered por obra, puede funcionar bien, si no,
yo te recomendaría que lo pruebes con mucho cariño, ya que sql no garantiza
el orden en el que se ejecutará esta instrucción y depende del orden para
que funcione bien, sería algo así

declare @contrato int
Declare @obra int
set @obra=-1
set @contrato=0
update tabla set @contrato=case when @obra=obra then @contrato+1 else 0 end
,contrato=@contrato,@obra=obra

Espero que te sirva, ten en cuenta que está sin probar!!

Espero que te sirva.

Saludos
Miguel Egea
http://www.portalsql.com
Sql-Server MVP
"Carmen" escribió en el mensaje
news:e3$sxt$
Tengo una tabla de obras y contratos por obra . Para cada obra quiero
renumerar sus contrato comenzando por 1. ¿Hay alguna forma de hacer esto


en
una sentencia SQL sin tener que usar un cursor?

Muchas gracias


Respuesta Responder a este mensaje
#2 Carmen
12/08/2003 - 10:58 | Informe spam
Muchas gracias, he creado el índice clustered y me ha funcionado
perfectamente.

"Miguel Egea" escribió en el mensaje
news:#
Si tu clave de contrato es clustered por obra, puede funcionar bien, si


no,
yo te recomendaría que lo pruebes con mucho cariño, ya que sql no


garantiza
el orden en el que se ejecutará esta instrucción y depende del orden para
que funcione bien, sería algo así

declare @contrato int
Declare @obra int
set @obra=-1
set @contrato=0
update tabla set @contrato=case when @obra=obra then @contrato+1 else 0


end
,contrato=@contrato,@obra=obra

Espero que te sirva, ten en cuenta que está sin probar!!

Espero que te sirva.

Saludos
Miguel Egea
http://www.portalsql.com
Sql-Server MVP
"Carmen" escribió en el mensaje
news:e3$sxt$
> Tengo una tabla de obras y contratos por obra . Para cada obra quiero
> renumerar sus contrato comenzando por 1. ¿Hay alguna forma de hacer esto
en
> una sentencia SQL sin tener que usar un cursor?
>
> Muchas gracias
>
>


Respuesta Responder a este mensaje
#3 Miguel Egea
12/08/2003 - 15:07 | Informe spam
Estupendo, me alegro.!!

Espero que te sirva.

Saludos
Miguel Egea
http://www.portalsql.com
Sql-Server MVP
"Carmen" escribió en el mensaje
news:eK2Xn$
Muchas gracias, he creado el índice clustered y me ha funcionado
perfectamente.

"Miguel Egea" escribió en el mensaje
news:#
> Si tu clave de contrato es clustered por obra, puede funcionar bien, si
no,
> yo te recomendaría que lo pruebes con mucho cariño, ya que sql no
garantiza
> el orden en el que se ejecutará esta instrucción y depende del orden


para
> que funcione bien, sería algo así
>
> declare @contrato int
> Declare @obra int
> set @obra=-1
> set @contrato=0
> update tabla set @contrato=case when @obra=obra then @contrato+1 else 0
end
> ,contrato=@contrato,@obra=obra
>
> Espero que te sirva, ten en cuenta que está sin probar!!
>
> Espero que te sirva.
>
> Saludos
> Miguel Egea
> http://www.portalsql.com
> Sql-Server MVP
> "Carmen" escribió en el mensaje
> news:e3$sxt$
> > Tengo una tabla de obras y contratos por obra . Para cada obra quiero
> > renumerar sus contrato comenzando por 1. ¿Hay alguna forma de hacer


esto
> en
> > una sentencia SQL sin tener que usar un cursor?
> >
> > Muchas gracias
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida