![]() |
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. |
Código: select auxiliar, fecha, (select sum(debe) from tabla where id<=T.id) as acumulado from tabla T |
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 |
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 |
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, |
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. |
| La zona horaria es GMT -6. Ahora son las 07:30. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.