Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/07/2008, 06:32
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Acumulador en un select???

La teoria dice que el orden introducción de los registros no debe importar en una base de datos relacional, el ejemplo que nos das no cumple este principio puesto que el resultado de la consulta que piedes, si la solucionamos, dependerá del orden en que se lean los registros de la t2 y tal como esta no tienes nada que los ordene...

Si quieres un resultado en función de un orden determinado de lectura de los registros este orden debe depender del contenido de un campo, no del orden de introducción del registro. Esto es solucionable con los id autoincrementales.

Reformulo tu ejemplo:

id monto
1----10

tabla t2
id idt1 monto
1--- 1 --- 5
2--- 1 --- 3
3--- 1 --- 1
4--- 1 --- 3


ahora si podemos apoyarnos en el valor del id de la tabla 2 para indicar como queremos ordenar los registros.

Vamos a intentar la consulta:

Código:
Select t2.id, 
           t2.idt1, 
           t2.monto,
          (select sum(aux.monto) 
                     from t2 as aux 
                     where aux.idt1=t2.idt1 
                     and aux.id<=t2.id) as cummonto
from t2 inner join t1
        on t1.id=t2.idt1
where (select sum(aux.monto) 
                      from t2 as aux 
                      where aux.idt1=t2.idt1 
                      and aux.id<=t2.id)<=t1.monto
order by t2.id;
Creo que funciona!!

Quim