SoloCodigo

Bases de Datos => MySQL => Mensaje iniciado por: gokufast en Jueves 6 de Septiembre de 2007, 20:31

Título: Suma Por Fecha
Publicado por: gokufast en Jueves 6 de Septiembre de 2007, 20:31
tengo el siguiente query:

select vol_corr, vol_cod, vol_fecha,tipo_mov,
sum(ifnull(vol_depus,0)) as dep,
sum(ifnull(vol_retus,0)) as ret,
SUM(ifnull(vol_depus,0)-ifnull(vol_retus,0)) as saldo
from bono
where vol_cod=90
GROUP BY vol_corr


y lo que sale es mas o menos asi

vol_corr, vol_cod, vol_fecha, tipo_mov, dep, ret, saldo
30       90   31/10/2002   DEP   40,49     0,00     40,49
31       90   30/11/2002   DEP   40,27     0,00     40,27
32       90   31/12/2002   DEP   40,11     0,00     40,11
33       90   31/12/2002   RET   0,00     99,59     -99,59
34       90   31/01/2003   DEP   39,74     0,00     39,74
35       90   28/02/2003   DEP   39,58     0,00     39,58
36       90   31/03/2003   DEP   39,37     0,00     39,37
 
donde dep es los depositos, ret son los retiros y saldo es la resta de ambos

mi problema va por que me sume los saldos de cada fecha, ej
31/10/2002   DEP   40,49   0,00   40,49
30/11/2002   DEP   40,27   0,00   80,76
31/12/2002   DEP   40,11   0,00   120,87
31/12/2002   RET   0,00   99,59   21,28
31/01/2003   DEP   39,74   0,00   39,74
28/02/2003   DEP   39,58   0,00   100,6

osea que el saldo se vaya incrementando o decrementando, dependiendo de la fecha
Título: Re: Suma Por Fecha
Publicado por: Mollense en Jueves 6 de Septiembre de 2007, 21:48
Esto me parece una chanchada  :P ...
...pero funciona:

<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]select[/color] vol_corr AS codigo, vol_cod, vol_fecha,tipo_mov,
sum(ifnull(vol_depus,0)) as dep,
sum(ifnull(vol_retus,0)) as ret,
([color=blue;font-weight]select[/color] SUM(ifnull(vol_depus,0)-ifnull(vol_retus,0)) from bono where vol_corr<=codigo)as saldo
from bono where vol_cod=90
GROUP BY vol_corr; <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
Título: Re: Suma Por Fecha
Publicado por: gokufast en Jueves 6 de Septiembre de 2007, 21:55
:P  vale, luego lo puedo optimizar mejor, hago la prueba  y les comento como me fue
Título: Re: Suma Por Fecha
Publicado por: Mollense en Jueves 6 de Septiembre de 2007, 22:12
Cita de: "gokufast"
:P  vale, luego lo puedo optimizar mejor, hago la prueba  y les comento como me fue
Seguro, esa es la idea  :comp:
Título: Re: Suma Por Fecha
Publicado por: LeGatoRojo en Jueves 6 de Septiembre de 2007, 22:47
No me quedo claro que querias peguntar  ;)
Título: Re: Suma Por Fecha
Publicado por: gokufast en Jueves 6 de Septiembre de 2007, 23:13
lo que quiero es que cada fecha el saldo vaya incrementandose con los depositos

vol_fecha, tipo_mov, dep, ret, saldo
31/10/2002 DEP 40,49 0,00 40,49
30/11/2002 DEP 40,27 0,00 80,76
31/12/2002 DEP 40,11 0,00 120,87

o si hay retiros vaya bajando el saldo

(saldo anterior = 120,87)
31/12/2002 RET 0,00 99,59 21,28
31/01/2003 RET 0,00 10,00 11,28
28/02/2003 RET 0,00 10,00 01,28
Título: Re: Suma Por Fecha
Publicado por: gokufast en Jueves 6 de Septiembre de 2007, 23:54
Cita de: "Mollense"
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]select[/color] vol_corr AS codigo, vol_cod, vol_fecha,tipo_mov,
sum(ifnull(vol_depus,0)) as dep,
sum(ifnull(vol_retus,0)) as ret,
([color=blue;font-weight]select[/color] SUM(ifnull(vol_depus,0)-ifnull(vol_retus,0)) from bono where vol_corr<=codigo)as saldo
from bono where vol_cod=90
GROUP BY vol_corr; <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
sale genial!!!, solo con una salvedad, que cuando el vol_corr no es seguido para el vol_cod=90

ej.
vol_corr, vol_cod
1, 90
2, 90
3, 90

4, 75
5, 75
6, 75
7, 75
8, 75
9, 75
10, 90
11, 210
12, 210
13, 90

el saldo suma los que estan entre el 3 y el 10 y entre el 10 y el 50

la ayuda me esta ayudando muchisimo, gracias
Título: Re: Suma Por Fecha
Publicado por: gokufast en Viernes 7 de Septiembre de 2007, 05:52
con toda la ayuda y haciendo pruebas logre mi cometido que se refleja en este query (aunque aun esta en borrador)

SELECT
  vol_corr AS codigo,
  vol_cod AS socio,
  vol_fecha AS fecha,
  tipo_mov AS mov,
  ifnull(vol_depus, 0) AS dep,
  ifnull(vol_retus, 0) AS ret,
 
  (SELECT SUM(ifnull(vol_depus, 0) - ifnull(vol_retus, 0)) AS FIELD_1
  FROM bono
  WHERE vol_corr <= codigo AND vol_cod = 90) AS saldo

FROM
  bono
WHERE
  vol_cod = 90
GROUP BY
  codigo

ahora necesito ayuda para 2 cosas :P , 1 para optimizar el query y sobre todo quiero que pueda poner el uso de fechas

- Que pueda poner un rango de fechas ej. entre el 31/01/2007 y el 31/07/2007

ó

- que digamos me saque todos los registros desde enero al ultimo que tenga (por mes)

y...
agradezo toda la ayuda que me brindaron

salu2