Columna Acumulados

17/09/2004 - 18:24 por Jose Soutullo | Informe spam
Saludos a todos.

Quisiera en un select sacar una columna de acumulados, me explico, por
ejemplo como de una cuenta bancaria a partir del Debe y el Haber sacar un
columna saldo en el propio comando select.

Se puede ?

Preguntas similare

Leer las respuestas

#1 Javier Loria
17/09/2004 - 20:01 | Informe spam
Hola:
En SQL los conjuntos por su naturaleza no son ordenados, lo que exige
ciertas tecnicas "especiales" para generar este tipo de balances. Esto
consiste en sumar todos los valores que cumplan la condicion de menor que la
fila actual.
Asumamos de forma sencilla un Id (numero consecutivo y un Monto que es
el movimiento. Para acumular uno puede hacer
==SELECT M1.Id
, M1.Monto
, SUM(M2.Monto) AS Acumulado
FROM Movimientos AS M1
JOIN Movimientos AS M2
ON M1.Id>=M2.Id
GROUP BY M1.Id, M1.Monto
== Usa varias tecnicas:
a) Hay un JOIN de la Tabla con ella misma, por eso se usan los Alias M1
y M2.
b) M1 representa el "Movimiento Actual"
c) M2 repesentas todos los movimientos anteriores al movimiento actual.
d) La condicion es > Si tienes problemas adaptando esta tecnica a tus tablas, puedes postear
el codigo de creacion de la tabla, algunos datos de ejemplo y el resultado
deseado para poderte ayudar mas.
Espero te funcione,


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

"Jose Soutullo" wrote in message
news:
Saludos a todos.

Quisiera en un select sacar una columna de acumulados, me explico, por
ejemplo como de una cuenta bancaria a partir del Debe y el Haber sacar un
columna saldo en el propio comando select.

Se puede ?


Respuesta Responder a este mensaje
#2 Jorge R
17/09/2004 - 20:05 | Informe spam
select debe, haber, (haber - debe) from saldos


"Jose Soutullo" escribió en el mensaje
news:
Saludos a todos.

Quisiera en un select sacar una columna de acumulados, me explico, por
ejemplo como de una cuenta bancaria a partir del Debe y el Haber sacar un
columna saldo en el propio comando select.

Se puede ?


Respuesta Responder a este mensaje
#3 Jose Soutullo
17/09/2004 - 21:49 | Informe spam
Javier, Gracias por la rapida respuesta. Entiendo tu planteamiento, pero no
logro dar con el resultado.
La tabla que tengo son los movimientos de un articulo donde guardo la fecha
del movimiento, y las cantidades movidas (en positivo entradas y con
negativo salidas), lo que quiero hacer es un select con el siguiente
resultado

Fecha.MovimientoExistencias
01.01.04 10 10
02.01.04 -5 5

etc.

Tal vez sea algo "elemental" pero no me sale

Gracias de nuevo.


"Javier Loria" escribió en el mensaje
news:%23YL%
Hola:
En SQL los conjuntos por su naturaleza no son ordenados, lo que exige
ciertas tecnicas "especiales" para generar este tipo de balances. Esto
consiste en sumar todos los valores que cumplan la condicion de menor que


la
fila actual.
Asumamos de forma sencilla un Id (numero consecutivo y un Monto que es
el movimiento. Para acumular uno puede hacer
==> SELECT M1.Id
, M1.Monto
, SUM(M2.Monto) AS Acumulado
FROM Movimientos AS M1
JOIN Movimientos AS M2
ON M1.Id>=M2.Id
GROUP BY M1.Id, M1.Monto
==> Usa varias tecnicas:
a) Hay un JOIN de la Tabla con ella misma, por eso se usan los Alias


M1
y M2.
b) M1 representa el "Movimiento Actual"
c) M2 repesentas todos los movimientos anteriores al movimiento


actual.
d) La condicion es >> Si tienes problemas adaptando esta tecnica a tus tablas, puedes


postear
el codigo de creacion de la tabla, algunos datos de ejemplo y el resultado
deseado para poderte ayudar mas.
Espero te funcione,


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

"Jose Soutullo" wrote in message
news:
> Saludos a todos.
>
> Quisiera en un select sacar una columna de acumulados, me explico, por
> ejemplo como de una cuenta bancaria a partir del Debe y el Haber sacar


un
> columna saldo en el propio comando select.
>
> Se puede ?
>
>


Respuesta Responder a este mensaje
#4 Javier Loria
17/09/2004 - 22:18 | Informe spam
Hola:
Algo como esto:
== SELECT M1.Fecha
, M1.Movimiento
, SUM(M2.Movimiento) AS Existencias
FROM Movimientos AS M1
JOIN Movimientos AS M2
ON M1.Fecha>=M2.Fecha
GROUP BY M1.Fecha
, M1.Movimiento
==
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

"Jose Soutullo" wrote in message
news:uZ#
Javier, Gracias por la rapida respuesta. Entiendo tu planteamiento, pero


no
logro dar con el resultado.
La tabla que tengo son los movimientos de un articulo donde guardo la


fecha
del movimiento, y las cantidades movidas (en positivo entradas y con
negativo salidas), lo que quiero hacer es un select con el siguiente
resultado

Fecha.MovimientoExistencias
01.01.04 10 10
02.01.04 -5 5

etc.

Tal vez sea algo "elemental" pero no me sale

Gracias de nuevo.


"Javier Loria" escribió en el mensaje
news:%23YL%
> Hola:
> En SQL los conjuntos por su naturaleza no son ordenados, lo que


exige
> ciertas tecnicas "especiales" para generar este tipo de balances. Esto
> consiste en sumar todos los valores que cumplan la condicion de menor


que
la
> fila actual.
> Asumamos de forma sencilla un Id (numero consecutivo y un Monto que


es
> el movimiento. Para acumular uno puede hacer
> ==> > SELECT M1.Id
> , M1.Monto
> , SUM(M2.Monto) AS Acumulado
> FROM Movimientos AS M1
> JOIN Movimientos AS M2
> ON M1.Id>=M2.Id
> GROUP BY M1.Id, M1.Monto
> ==> > Usa varias tecnicas:
> a) Hay un JOIN de la Tabla con ella misma, por eso se usan los Alias
M1
> y M2.
> b) M1 representa el "Movimiento Actual"
> c) M2 repesentas todos los movimientos anteriores al movimiento
actual.
> d) La condicion es >> > Si tienes problemas adaptando esta tecnica a tus tablas, puedes
postear
> el codigo de creacion de la tabla, algunos datos de ejemplo y el


resultado
> deseado para poderte ayudar mas.
> Espero te funcione,
>
>
> 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
>
> "Jose Soutullo" wrote in message
> news:
> > Saludos a todos.
> >
> > Quisiera en un select sacar una columna de acumulados, me explico,


por
> > ejemplo como de una cuenta bancaria a partir del Debe y el Haber sacar
un
> > columna saldo en el propio comando select.
> >
> > Se puede ?
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida