Detectar campos diferentes

Hola a todos, a ver si podéis ayudarme.
Tengo la siguiente tabla:
id   Sin Redondear            Entera      Decimal                
10 20,9940800722056    20 0,994080072205627
55 20,9940800722056    20            0,994080072205627
15 6,9868184797017      7              0,986818479701697
Como ven las 2 primeras entradas son idénticas salvo en el "id", pues bien yo lo que quiero es hacer UPDATE sobre el campo "Entera" con la condición de que se haga sobre el registro en el que "Decimal" sea mayor, para ello uso lo siguiente:
UPDATE nombre_tabla SET Entera=Entera+1 where Decimal IN (SELECT MAX (Decimal) from nombre_tabla)
Como sabrán esto me actualizará el campo "Entera" de las 2 primeras entradas, ¿qué puedo hacer para que solo me actualice una de las 2?
Espero que haya quedado bien explicada la duda y puedan ayudarme, muchas gracias de antemano, saludos.

1 Respuesta

Respuesta
1
La solución sería utilizar un cursor. A través de este, puedes recorrer en forma secuencial los registros. Aunque esto depende de la base de datos. Si necesitas más información, por favor me cuentas que motor de base de datos tienes
Hola aaron50x, lo primero gracias por la rapidez de tu respuesta. El motor que uso es el que lleve Access 2000 que no se cual es, lo mismo me pasa con lo de usar un cursor, la verdad es que mis conocimientos son muy limitados, se puede decir que voy aprendiendo sobre la marcha, así que si pudieras orientarme un poco te lo agradecería, gracias y un saludo.
Hola aaron50x,
Lo primero gracias por tu respuesta, te comento, utilizo Access 2000, no se que motor tiene, la verdad es que mis conocimientos son muy limitados, podría decirse que aprendo sobre la marcha, así que si puedes decirme como funciona el cursor en Access intentaré utilizarlo, o si se te ocurre otra cosa, soy todo oidos/ojos :)
Muchas gracias y un saludo.
Anoche mientras formía, se me ocurrió esta solución:
UPDATE nombre_tabla
SET Entera=Entera+1
where
id in (
select min(id) from nombre_tabla where decimal in (SELECT MAX (Decimal) from nombre_tabla)
)
Así estaríamos actualizando el registro con el menor id que tenga el máximo decimal. Si lo prefieres puedes poner el max(id) en vez del min(id).
Esta forma es más sencilla que utilizar un cursor, ya que no conozco mucho Access 2000, no estoy seguro si pueden utilizar cursores.
Hola aaron50x, me acabo de dar cuenta de que no he expuesto mi duda correctamente, lo que necesito es que se actualicen los decimales de mayor al menor un numero determinado de veces, la consulta de hecho va en un For, de todos modos no te preocupes porque tu respuesta me ha inspirado y acabo de solucionar el problema, lo que hago es usar tu consulta pero que ademas me actualice el campo Decimal a 0 así me pasa directamente al siguiente más mayor.
Por tanto, muchas gracias por tu respuesta me has sido de gran ayuda, un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas