none
Update actualizar campo enumerado RRS feed

  • Pregunta

  • Buenas, tengo el siguiente problema, tengo una tabla con los siguientes datos :

    CORREDOR / POSICION / PUNTUACIÓN

    PEPE                1                   10

    LUIS                 2                   7

    CARLOS            3                   5

    La puntuación se va asignando de manera automática y lo que necesito es poder recalcular el campo posición y no se si esto seria posible con un update.

    Hasta ahora lo que vengo haciendo es un select con Rank en una tabla temporal:

    SELECT [id], corredor, 
          ,rank() OVER (ORDER BY puntuacion, corredor) as posicion
          ,puntuacion
      FROM listacarrera ORDER BY posicion
    

    Y después elimino la tabla y hago un insert into desde la tabla principal.

    ¿no habría una forma mas rápida de hacerlo sin tener que dar tantos pasos?

    gracias





    miércoles, 3 de mayo de 2017 9:09

Respuestas

  • Hola que tal mayoko, aqui te dejo un ejemplo para la actualizacion de tus registros.

    use tempdb
    go
    --drop table Corredor
    
    create table Corredor(
    codigo int primary key identity(1,1),
    Corredor varchar(50),
    Posicion int,
    Puntuacion int)
    
    insert into Corredor(Corredor,Posicion,Puntuacion)
           values('Pepe',1,10),
    	         ('Luis',2,7),
    			 ('Carlos',3,5)
    
    select * from Corredor
    
    
    /**************LAS DOS DEBERIAN CORRER PARA ACTUALIZAR**************/
    --Esta es la primera actualizacion que se hace de la puntuacion
    update Corredor set Puntuacion=2
    where Corredor='Pepe'
    
    --SELECT * FROM Corredor
    --La siguiente actualizacion es la Posicion
    Update Cor1
    set posicion=cor2.posicion
    from Corredor as cor1,(SELECT codigo,Corredor,Puntuacion,rank() over(order by puntuacion desc,corredor)
    posicion from Corredor) cor2
    where cor1.codigo=cor2.codigo
    
    --Vemos la actualizacion
    select * from Corredor
    

    Otra manera de poder hacerlo es a traves de un MERGE, aqui esta la descripcion MERGE SQL SERVER.

    Cualquier cosa nos comentas.

    Saludos,

    Jorge Muchaypiña G.


    Business Intelligence Analyst

    • Marcado como respuesta mayoko miércoles, 3 de mayo de 2017 10:54
    miércoles, 3 de mayo de 2017 10:40