Retroceder   Foros del Web > Programación para sitios web > Bases de Datos

Respuesta
 
Herramientas Desplegado
Antiguo 07-feb-2006, 09:04   #1 (permalink)
jeffcar está en el buen camino
 
Fecha de Ingreso: marzo-2004
Ubicación: Bucaramanga
Mensajes: 69
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.
jeffcar está desconectado   Responder Citando
Antiguo 08-feb-2006, 05:14   #2 (permalink)
Jose_minglein2 tiene algunos puntos positivos de karma
 
Avatar de Jose_minglein2
 
Fecha de Ingreso: noviembre-2004
Mensajes: 2.334
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,
Jose_minglein2 está desconectado   Responder Citando
Antiguo 08-feb-2006, 14:13   #3 (permalink)
jeffcar está en el buen camino
 
Fecha de Ingreso: marzo-2004
Ubicación: Bucaramanga
Mensajes: 69
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
jeffcar está desconectado   Responder Citando
Antiguo 08-feb-2006, 14:52   #4 (permalink)
jeffcar está en el buen camino
 
Fecha de Ingreso: marzo-2004
Ubicación: Bucaramanga
Mensajes: 69
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
jeffcar está desconectado   Responder Citando
Antiguo 09-feb-2006, 00:56   #5 (permalink)
Jose_minglein2 tiene algunos puntos positivos de karma
 
Avatar de Jose_minglein2
 
Fecha de Ingreso: noviembre-2004
Mensajes: 2.334
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.
Jose_minglein2 está desconectado   Responder Citando
Antiguo 09-feb-2006, 07:15   #6 (permalink)
jeffcar está en el buen camino
 
Fecha de Ingreso: marzo-2004
Ubicación: Bucaramanga
Mensajes: 69
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.
jeffcar está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 06:54.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93