Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

sentencia acumulativa

Estas en el tema de sentencia acumulativa en el foro de Bases de Datos General en Foros del Web. hola amigos trabajo en sql server y tengo la siguiente tarea que no he podido resolver: tengo la siguiente tabla auxiliar(fecha,debe,habe,auxiliar) fecha | debe | ...
  #1 (permalink)  
Antiguo 07/02/2006, 10:04
 
Fecha de Ingreso: marzo-2004
Ubicación: Bucaramanga
Mensajes: 71
Antigüedad: 20 años, 8 meses
Puntos: 0
sentencia acumulativa

hola amigos trabajo en sql server y tengo la siguiente tarea que no he podido resolver:

tengo la siguiente tabla auxiliar(fecha,debe,habe,auxiliar)
fecha | debe | habe | auxiliar
A | 240 | 0 | 1
B | 100 | 0 | 1
C | 60 | 140 | 1

ahora lo que necesito hacer es presentar la informacion acumulada, me explico para el ejmplo con el campo (debe)
el primer registro con 240, el segundo con la suma del primero:340 el tercero con la siguiente suma :400
=240
(240+100)=340
(340+60)=400
necesito estos resultados

Debe | auxiliar | fecha
240 | 1 | A
340 | 1 | B
400 | 1 | C



espero haber sido claro y la verdad necesito es que me guien un poco para saber por donde pueda ser

no necesito modificar sino simplemente presentar, esto es para un informe
de ante mano gracias por sus posibles aportes.
  #2 (permalink)  
Antiguo 08/02/2006, 06:14
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años
Puntos: 8
Código:
select auxiliar, fecha, (select sum(debe) from tabla where id<=T.id) as acumulado from tabla T
Eso suponiendo que el acumulado va ordenado por el id,
  #3 (permalink)  
Antiguo 08/02/2006, 15:13
 
Fecha de Ingreso: marzo-2004
Ubicación: Bucaramanga
Mensajes: 71
Antigüedad: 20 años, 8 meses
Puntos: 0
Estupendo muchas gracias la verdad yo lo estaba trabajando por otros lados que me ponian mas complique, es una instrucion sencilla y funciona muy bien
  #4 (permalink)  
Antiguo 08/02/2006, 15:52
 
Fecha de Ingreso: marzo-2004
Ubicación: Bucaramanga
Mensajes: 71
Antigüedad: 20 años, 8 meses
Puntos: 0
tengo otra inquietud ojala puedas ayudar a resolverla , si quisiera poner una condicion, suponiendo que tengo otro campo llamado 'opcion' y que si opcion es 1 que me presente la sumatoria al debe y que si fuera 2 me presente la sumatoria al habe, es esto posible
----------------------------------
|fecha|auxiliar|debe|habe|opcion|
----------------------------------
| a | 1 | 240 | 0 | 1 |
| b | 1 | 100 | 0 | 1 |
| c | 1 | 0 | 140 | 1 |
| d | 2 | 0 |360 | 2 |
| e | 2 | 0 |190 | 2 |
| f | 2 | 250 | 0 | 2 |

Resultados
----------------------------------
|fecha|auxiliar|acumulado|opcion|
----------------------------------
| a | 1 | 240 | 1 |
| b | 1 | 340 | 1 |
| c | 1 | 340 | 1 |
| d | 2 | 360 | 2 |
| e | 2 | 550 | 2 |
| f | 2 | 550 | 2 |

aqui los acumulados van por auxiliar, y para auxiliar '1' tiene opcion '1' y los acumulados son del debe,y para el auxiliar 2 tiene opcion '2' entonces en acumulados coloco los del habe.

nose si exista una especie de IIF(opcion==1,sumatoriaDebe,Sumatoriahabe) as acumulado

espero que este claro el post, de ante mano gracias ya me has ayudado bastante, igual por mi cuenta voy a investigar si puedo resolverlo yo antes
  #5 (permalink)  
Antiguo 09/02/2006, 01:56
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años
Puntos: 8
Eso suele pasar intentas buscar la solución en una dirección y te ofuscas y te complicas la vida. Lo mejor, borrar el chip y volver a plantear el problema.
Código:
select auxiliar, fecha, 
if(opcion=1,
(select sum(debe) from tabla where id<=T.id),
(select sum(haber) 
from tabla where id<=T.id)) as acumulado 
from tabla T
Asi sería en Mysql, en SQL server, la instrucción if es de otra manera (iIF o algo así), mira la sintaxis exacta, pero la idea es esa. Es que yo uso mysql y la sintaxis de SQLServer ni idea.
  #6 (permalink)  
Antiguo 09/02/2006, 08:15
 
Fecha de Ingreso: marzo-2004
Ubicación: Bucaramanga
Mensajes: 71
Antigüedad: 20 años, 8 meses
Puntos: 0
Bueno para sql quedaria algo asi, ya lo probe y me funciona muy bien

select auxiliar, fecha,
(case opcion when '1' then (select sum(debe) from tabla where id<=T.id)
else (select sum(haber) from tabla where id<=T.id) end) as acumulado
from tabla T


bueno muchas gracias por tu ayuda y por la prontitud a tus respuestas
Muy seguramente este tema le sera de gran utilidad a otras personas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:05.