Ver Mensaje Individual
  #3 (permalink)  
Antiguo 20/04/2010, 14:46
hunabku
 
Fecha de Ingreso: diciembre-2003
Mensajes: 595
Antigüedad: 20 años, 5 meses
Puntos: 1
Respuesta: Problema con cursor

Cita:
Iniciado por Beakdan Ver Mensaje
En general, en SQL Server 2005 o 2008 muy pocos problemas requieren del uso de un cursor. Este no es uno de ellos.

Código:
WITH upd AS (
    SELECT    ROW_NUMBER() OVER(PARTITION BY can_id order by fec_elab) as contador2,
            contador,
            can_id
    FROM    SEG_CANCER_NAB
    WHERE    CAN_ID in (906930,905573)
)
UPDATE upd
SET contador = contador2;
Sucede que dentro del bucle del cursor al realizar el update, estás actualizando todos aquellos registros en los que can_id corresponde al @can_id en turno es decir...

Primera vez: @can_id = 905573, @CONTADOR2 = 1
Después del UPDATE:
1 905573
1 905573

Segunda vez: @can_id = 905573, @CONTADOR2 = 2
Después del UPDATE:
2 905573
2 905573

Como podrás ver, el cursor hace exactamente lo que esperararía: Actualizar n veces cada grupo.

Saludos.

Entiendo y mi problema es que no tengo un identificador unico para poder asociarlo uno a uno existira en sql server algo asi como un row_id para poder generar el update asociado a los grupos