Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/03/2011, 14:36
ivnovata
 
Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta Update con select anidado

Buenas tardes a todos:
Es la primera vez que ingreso al foro, por lo cual dejenme saber si no me expreso de manera correcta. Mi problema es el siguiente.
Tengo la tabla llamada "facturas_pagos" con los siguientes campos:

Fecha - abonado - facturas - pagos - saldo (más otros campos)

El dato de busqueda es el abonado. La tabla contiene varias filas por cada abonado y pueden no estar ordenadas.

Tengo un proceso realizado que calcula el saldo sumando el campo facturas y restandolo de la suma de pagos por cada cliente. Eso se guarda en @saldo y funciona ok.

A medida que se ingresan registros nuevos, ademas de calcular el saldo, necesito que se grabe en el campo "saldo" de la tabla en el ultimo registro correspondiente a ese abonado. Hice la siguiente sentencia:

UPDATE FACTURAS_PAGOS
SET SALDO = @saldo
WHERE (abonado = @cliente and FECHA =
(SELECT MAX(FECHA) FROM FACTURAS_PAGOS
WHERE (ABONADO = @CLIENTE and saldo not in (select saldo from facturas_pagos where saldo = 0))))

@cliente es un parametro de entrada que se facilita al procedimiento.
Utilicé la busqueda por fecha maxima, para saber cual es el ultimo registro de ese abonado y funciona. El problema surge cuando tengo fechas repetidas. Por eso agregue que tambien verifique si el "saldo" esta en 0. Pero siempre actualiza todos los campos con la fecha mayor. Es decir, funciona hasta la seleccion de cliente y fecha máxima, pero no logro que actualice el saldo solo en el ultimo registro del cliente.

Alguna sugerencia? que estoy haciendo mal?

Muchas gracias