Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/04/2010, 13:54
Avatar de Beakdan
Beakdan
 
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Respuesta: Problema con cursor

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;
Cita:
alguien sabra porque se debe esto
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.