Select con saldo

28/08/2003 - 00:44 por Héctor Caiguaraico | Informe spam
Hola,

una pregunta por favor:

Como le hago para que un select me retorne una cantidad acumulada por cada
registro.
ejemplo:
COD MONTO ACUMULADO
0001 100.00 100.00
0002 50.00 150.00
0003 100.00 250.00
y ahora q lo planteo da lo mismo en como obtener un numero correlativo por
cada fila pero con el resultado del select

Gracias,
Héctor Caiguaraico

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
28/08/2003 - 09:31 | Informe spam
Esta es una opción (probablemente no la más eficiente, pero el tiempo
apremia) dentro de las muchas que existen:

SELECT a.Cod, Monto,
(SELECT SUM(Monto) FROM acum WHERE Cod<=a.Cod) Acumulado,
(SELECT COUNT (*) FROM acum WHERE Cod<=a.Cod) Numero
FROM acum a





Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"Héctor Caiguaraico" escribió en el mensaje
news:
Hola,

una pregunta por favor:

Como le hago para que un select me retorne una cantidad acumulada por cada
registro.
ejemplo:
COD MONTO ACUMULADO
0001 100.00 100.00
0002 50.00 150.00
0003 100.00 250.00
y ahora q lo planteo da lo mismo en como obtener un numero correlativo por
cada fila pero con el resultado del select

Gracias,
Héctor Caiguaraico


Respuesta Responder a este mensaje
#2 Liliana Sorrentino
29/08/2003 - 20:00 | Informe spam
Héctor,
en la información no tenés algo como fecha por ejemplo? ¿Podrías mandar la
estructura simplificada de tu tabla?

Saludos.. Liliana.

"Héctor Caiguaraico" escribió en el mensaje
news:
Gracias Carlos,

no puedo aplicar la sub consulta por que no existe un código correlativo,


en
todo caso si me puedes decir donde encuentro mas información


específicamente
sobre esta situación

Héctor

"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:
>
> Esta es una opción (probablemente no la más eficiente, pero el


tiempo
> apremia) dentro de las muchas que existen:
>
> SELECT a.Cod, Monto,
> (SELECT SUM(Monto) FROM acum WHERE Cod<=a.Cod) Acumulado,
> (SELECT COUNT (*) FROM acum WHERE Cod<=a.Cod) Numero
> FROM acum a
>
>
>
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> Por favor, responder únicamente al foro
>
> (Guía de netiquette del foro)
> http://www.helpdna.net/bosqlfaq00.htm
> http://perso.wanadoo.es/rubenvigon/foro
>
> (FAQ's de SQL Server)
> http://support.microsoft.com/defaul.../70faq.asp
> http://www.helpdna.net/bosqlfaq.htm
>
> "Héctor Caiguaraico" escribió en el mensaje
> news:
> > Hola,
> >
> > una pregunta por favor:
> >
> > Como le hago para que un select me retorne una cantidad acumulada por
cada
> > registro.
> > ejemplo:
> > COD MONTO ACUMULADO
> > 0001 100.00 100.00
> > 0002 50.00 150.00
> > 0003 100.00 250.00
> > y ahora q lo planteo da lo mismo en como obtener un numero correlativo
por
> > cada fila pero con el resultado del select
> >
> > Gracias,
> > Héctor Caiguaraico
> >
> >
>
>


Respuesta Responder a este mensaje
#3 Héctor Caiguaraico
29/08/2003 - 23:23 | Informe spam
Liliana,

El asunto es que necesito que el Select me retorne ya acumulado una cantidad
porque con el datareport nose como hacerle para que acumule y entonces el
select debe retornar todos las columnas a imprimirse. Estoy usando VB6 + SQL
Server 2000.

Consulta:

Select IdReg, Fecha, Codigo, Cuenta, Depositos,
(Select Sum(Depositos) From OfiApt Where Cuenta = 'X1404' And
Fecha <= a.Fecha ) Saldo
From Oficina a Where Cuenta = 'X1404' Order By Fecha

Resultado:

IdReg Fecha Codigo Cuenta Depositos Saldo
50364 2002-05-20 00:00:00 01404 X1404 15.00 15.00
46031 2002-08-26 00:00:00 01404 X1404 31.00 139.00
46723 2002-08-26 00:00:00 01404 X1404 31.00 139.00
47282 2002-08-26 00:00:00 01404 X1404 31.00 139.00
47196 2002-08-26 00:00:00 01404 X1404 31.00 139.00
36593 2003-03-19 00:00:00 01404 X1404 50.00 189.00
33012 2003-05-27 00:00:00 01404 X1404 80.00 301.00
31413 2003-05-27 00:00:00 01404 X1404 32.00 301.00
31776 2003-06-11 00:00:00 01404 X1404 90.00 391.00

Nota:
Estoy tratando de crear la sub-consulta sumando por el campo fecha pero si
te fijas bien de la fila 2 a la 5 tiene el mismo saldo porque la fecha es la
misma y esto porque la tabla se importo de una DBF por migración de
sistemas.

espero no molestar con todo este rollo

Gracias,

Héctor


"Liliana Sorrentino" escribió en el mensaje
news:
Héctor,
en la información no tenés algo como fecha por ejemplo? ¿Podrías mandar la
estructura simplificada de tu tabla?

Saludos.. Liliana.

"Héctor Caiguaraico" escribió en el mensaje
news:
> Gracias Carlos,
>
> no puedo aplicar la sub consulta por que no existe un código


correlativo,
en
> todo caso si me puedes decir donde encuentro mas información
específicamente
> sobre esta situación
>
> Héctor
>
> "Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
> news:
> >
> > Esta es una opción (probablemente no la más eficiente, pero el
tiempo
> > apremia) dentro de las muchas que existen:
> >
> > SELECT a.Cod, Monto,
> > (SELECT SUM(Monto) FROM acum WHERE Cod<=a.Cod) Acumulado,
> > (SELECT COUNT (*) FROM acum WHERE Cod<=a.Cod) Numero
> > FROM acum a
> >
> >
> >
> >
> >
> > Un saludo
> >
> > -
> > "Sólo sé que no sé nada. " (Sócrates)
> >
> > Por favor, responder únicamente al foro
> >
> > (Guía de netiquette del foro)
> > http://www.helpdna.net/bosqlfaq00.htm
> > http://perso.wanadoo.es/rubenvigon/foro
> >
> > (FAQ's de SQL Server)
> > http://support.microsoft.com/defaul.../70faq.asp
> > http://www.helpdna.net/bosqlfaq.htm
> >
> > "Héctor Caiguaraico" escribió en el mensaje
> > news:
> > > Hola,
> > >
> > > una pregunta por favor:
> > >
> > > Como le hago para que un select me retorne una cantidad acumulada


por
> cada
> > > registro.
> > > ejemplo:
> > > COD MONTO ACUMULADO
> > > 0001 100.00 100.00
> > > 0002 50.00 150.00
> > > 0003 100.00 250.00
> > > y ahora q lo planteo da lo mismo en como obtener un numero


correlativo
> por
> > > cada fila pero con el resultado del select
> > >
> > > Gracias,
> > > Héctor Caiguaraico
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Javier Loria\(MVP\)
30/08/2003 - 18:03 | Informe spam
Hola Héctor:
Si Liliana me permite.
Podrias agregar como condicion a la fecha, IdReg, que asumo es la llave
Primaria de la tabla, lo que asumiendo que no esta no necesariamente tiene
un orden cronologico:

SELECT IdReg,
Fecha,
Codigo,
Cuenta,
Depositos,
SELECT SUM(Depositos) FROM OftiApt
WHERE (Cuenta= 'X1404') AND
((Fecha < A.Fecha ) OR
((Fecha = A.Fecha) AND
(IdReg=A.IdReg))) AS Saldo
FROM Oficina
WHERE Cuenta='X1404'
ORDER BY Fecha

Asumo que estas conciente del tiempo que este tipo de consulta consume
cuando se usa sobre tablas grandes (Millones de Filas).

Saludos,



Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


Héctor Caiguaraico escribio:
Liliana,

El asunto es que necesito que el Select me retorne ya acumulado una
cantidad porque con el datareport nose como hacerle para que acumule
y entonces el select debe retornar todos las columnas a imprimirse.
Estoy usando VB6 + SQL Server 2000.

Consulta:

Select IdReg, Fecha, Codigo, Cuenta, Depositos,
(Select Sum(Depositos) From OfiApt Where Cuenta = 'X1404'
And Fecha <= a.Fecha ) Saldo
From Oficina a Where Cuenta = 'X1404' Order By Fecha

Resultado:

IdReg Fecha Codigo Cuenta Depositos
Saldo 50364 2002-05-20 00:00:00 01404 X1404 15.00
15.00 46031 2002-08-26 00:00:00 01404 X1404 31.00
139.00 46723 2002-08-26 00:00:00 01404 X1404 31.00
139.00 47282 2002-08-26 00:00:00 01404 X1404 31.00
139.00 47196 2002-08-26 00:00:00 01404 X1404 31.00
139.00 36593 2003-03-19 00:00:00 01404 X1404 50.00
189.00 33012 2003-05-27 00:00:00 01404 X1404 80.00
301.00 31413 2003-05-27 00:00:00 01404 X1404 32.00
301.00 31776 2003-06-11 00:00:00 01404 X1404 90.00
391.00

Nota:
Estoy tratando de crear la sub-consulta sumando por el campo fecha
pero si te fijas bien de la fila 2 a la 5 tiene el mismo saldo porque
la fecha es la misma y esto porque la tabla se importo de una DBF por
migración de sistemas.

espero no molestar con todo este rollo

Gracias,

Héctor


"Liliana Sorrentino" escribió en el
mensaje news:
Héctor,
en la información no tenés algo como fecha por ejemplo? ¿Podrías
mandar la estructura simplificada de tu tabla?

Saludos.. Liliana.

"Héctor Caiguaraico" escribió en el mensaje
news:
Gracias Carlos,

no puedo aplicar la sub consulta por que no existe un código
correlativo, en todo caso si me puedes decir donde encuentro mas
información específicamente sobre esta situación

Héctor

"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el
mensaje news:

Esta es una opción (probablemente no la más eficiente, pero el
tiempo apremia) dentro de las muchas que existen:

SELECT a.Cod, Monto,
(SELECT SUM(Monto) FROM acum WHERE Cod<=a.Cod) Acumulado,
(SELECT COUNT (*) FROM acum WHERE Cod<=a.Cod) Numero
FROM acum a





Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"Héctor Caiguaraico" escribió en el mensaje
news:
Hola,

una pregunta por favor:

Como le hago para que un select me retorne una cantidad acumulada
por cada registro.
ejemplo:
COD MONTO ACUMULADO
0001 100.00 100.00
0002 50.00 150.00
0003 100.00 250.00
y ahora q lo planteo da lo mismo en como obtener un numero
correlativo por cada fila pero con el resultado del select

Gracias,
Héctor Caiguaraico
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida