Como sumar el contenido de los registros anteriores

20/04/2005 - 15:22 por Bárbara González | Informe spam
Saludos al grupo
Estoy haciendo la presentación de una tabla pero necesito que en una de las
columnas se valla llevando el acumulado de una columna monto, algo asi como
debe, haber, saldo en donde saldo es la suma de los anteriores registro. He
podido hacer que me lo haga con una subconsulta en el campo saldo, pero no
logro validar que no me tome los siguientes registros. Alguien puede
ayudarme para no hacerlo por programación si no por una consulta SQL. Claro
si se puede. Gracias de antemano

Bárbara González
Venezuela.-

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
20/04/2005 - 15:40 | Informe spam
Bárbara,

Pudieramos ver la definicion de la tabla?

Ejemplo:

use northwind
go

create table dbo.t (
colA int not null identity unique,
colB int not null,
colC int not null,
)
go

insert into t (colB, colC) values(1, 100)
insert into t (colB, colC) values(1, -100)
insert into t (colB, colC) values(1, 200)
insert into t (colB, colC) values(1, -100)
insert into t (colB, colC) values(1, 50)
insert into t (colB, colC) values(1, 25)
insert into t (colB, colC) values(2, 1000)
insert into t (colB, colC) values(2, -100)
insert into t (colB, colC) values(2, 300)
insert into t (colB, colC) values(2, -100)
insert into t (colB, colC) values(2, 150)
insert into t (colB, colC) values(2, -25)
go

select
a.colA,
a.colB,
a.colC,
sum(b.colC) as acumulado
from
t as a
left join
t as b
on a.colB = b.colB and b.colA <= a.colA
group by
a.colA,
a.colB,
a.colC
order by
a.colA,
a.colB
go

drop table t
go


AMB


"Bárbara González" wrote:

Saludos al grupo
Estoy haciendo la presentación de una tabla pero necesito que en una de las
columnas se valla llevando el acumulado de una columna monto, algo asi como
debe, haber, saldo en donde saldo es la suma de los anteriores registro. He
podido hacer que me lo haga con una subconsulta en el campo saldo, pero no
logro validar que no me tome los siguientes registros. Alguien puede
ayudarme para no hacerlo por programación si no por una consulta SQL. Claro
si se puede. Gracias de antemano

Bárbara González
Venezuela.-



Respuesta Responder a este mensaje
#2 Bárbara González
20/04/2005 - 15:47 | Informe spam
SELECT transacciones.clase AS clase,
transacciones.emision AS emision,
transacciones.referencia AS referencia,
transacciones.nombre AS descripcion,
case when transacciones.monto<0 then transacciones.monto else 0 end AS debe,
case when transacciones.monto>0 then transacciones.monto else 0 end AS
haber,
0 AS saldo
FROM transacciones
ORDER BY clase DESC, emision, referencia, nombre

esta es la tabla y donde dice 0 AS saldo es dond equiero poner el acumulado
de los registros anteriores

Gracias estoy estudiando tu ejemplo

Bárbara González
Venezuela.-
"Alejandro Mesa" escribió en el
mensaje news:
Bárbara,

Pudieramos ver la definicion de la tabla?

Ejemplo:

use northwind
go

create table dbo.t (
colA int not null identity unique,
colB int not null,
colC int not null,
)
go

insert into t (colB, colC) values(1, 100)
insert into t (colB, colC) values(1, -100)
insert into t (colB, colC) values(1, 200)
insert into t (colB, colC) values(1, -100)
insert into t (colB, colC) values(1, 50)
insert into t (colB, colC) values(1, 25)
insert into t (colB, colC) values(2, 1000)
insert into t (colB, colC) values(2, -100)
insert into t (colB, colC) values(2, 300)
insert into t (colB, colC) values(2, -100)
insert into t (colB, colC) values(2, 150)
insert into t (colB, colC) values(2, -25)
go

select
a.colA,
a.colB,
a.colC,
sum(b.colC) as acumulado
from
t as a
left join
t as b
on a.colB = b.colB and b.colA <= a.colA
group by
a.colA,
a.colB,
a.colC
order by
a.colA,
a.colB
go

drop table t
go


AMB


"Bárbara González" wrote:

Saludos al grupo
Estoy haciendo la presentación de una tabla pero necesito que en una de
las
columnas se valla llevando el acumulado de una columna monto, algo asi
como
debe, haber, saldo en donde saldo es la suma de los anteriores registro.
He
podido hacer que me lo haga con una subconsulta en el campo saldo, pero
no
logro validar que no me tome los siguientes registros. Alguien puede
ayudarme para no hacerlo por programación si no por una consulta SQL.
Claro
si se puede. Gracias de antemano

Bárbara González
Venezuela.-



Respuesta Responder a este mensaje
#3 Alejandro Mesa
20/04/2005 - 16:01 | Informe spam
Bárbara,

Pudiera ver la definicion de la tabla?
Que columnas identitfican unicamente una fila en esta tabla?
Como identifico las filas anteriores a una fila especifica?

Disculpa, pero la sentencia select que posteastes no me dice nada sobre
estas preguntas.


AMB


"Bárbara González" wrote:

SELECT transacciones.clase AS clase,
transacciones.emision AS emision,
transacciones.referencia AS referencia,
transacciones.nombre AS descripcion,
case when transacciones.monto<0 then transacciones.monto else 0 end AS debe,
case when transacciones.monto>0 then transacciones.monto else 0 end AS
haber,
0 AS saldo
FROM transacciones
ORDER BY clase DESC, emision, referencia, nombre

esta es la tabla y donde dice 0 AS saldo es dond equiero poner el acumulado
de los registros anteriores

Gracias estoy estudiando tu ejemplo

Bárbara González
Venezuela.-
"Alejandro Mesa" escribió en el
mensaje news:
> Bárbara,
>
> Pudieramos ver la definicion de la tabla?
>
> Ejemplo:
>
> use northwind
> go
>
> create table dbo.t (
> colA int not null identity unique,
> colB int not null,
> colC int not null,
> )
> go
>
> insert into t (colB, colC) values(1, 100)
> insert into t (colB, colC) values(1, -100)
> insert into t (colB, colC) values(1, 200)
> insert into t (colB, colC) values(1, -100)
> insert into t (colB, colC) values(1, 50)
> insert into t (colB, colC) values(1, 25)
> insert into t (colB, colC) values(2, 1000)
> insert into t (colB, colC) values(2, -100)
> insert into t (colB, colC) values(2, 300)
> insert into t (colB, colC) values(2, -100)
> insert into t (colB, colC) values(2, 150)
> insert into t (colB, colC) values(2, -25)
> go
>
> select
> a.colA,
> a.colB,
> a.colC,
> sum(b.colC) as acumulado
> from
> t as a
> left join
> t as b
> on a.colB = b.colB and b.colA <= a.colA
> group by
> a.colA,
> a.colB,
> a.colC
> order by
> a.colA,
> a.colB
> go
>
> drop table t
> go
>
>
> AMB
>
>
> "Bárbara González" wrote:
>
>> Saludos al grupo
>> Estoy haciendo la presentación de una tabla pero necesito que en una de
>> las
>> columnas se valla llevando el acumulado de una columna monto, algo asi
>> como
>> debe, haber, saldo en donde saldo es la suma de los anteriores registro.
>> He
>> podido hacer que me lo haga con una subconsulta en el campo saldo, pero
>> no
>> logro validar que no me tome los siguientes registros. Alguien puede
>> ayudarme para no hacerlo por programación si no por una consulta SQL.
>> Claro
>> si se puede. Gracias de antemano
>>
>> Bárbara González
>> Venezuela.-
>>
>>
>>



Respuesta Responder a este mensaje
#4 Bárbara González
20/04/2005 - 16:10 | Informe spam
No tengo nada que identifique un registro de otro solo un ID, que es un
numero que se genera consecutivo al crear el registro, pero este no estará
ordenado en la consulta ya que debo ordenar por clase que toma un valor 0 o
1 mas la fecha

Bárbara González
Venezuela.-
"Alejandro Mesa" escribió en el
mensaje news:
Bárbara,

Pudiera ver la definicion de la tabla?
Que columnas identitfican unicamente una fila en esta tabla?
Como identifico las filas anteriores a una fila especifica?

Disculpa, pero la sentencia select que posteastes no me dice nada sobre
estas preguntas.


AMB


"Bárbara González" wrote:

SELECT transacciones.clase AS clase,
transacciones.emision AS emision,
transacciones.referencia AS referencia,
transacciones.nombre AS descripcion,
case when transacciones.monto<0 then transacciones.monto else 0 end AS
debe,
case when transacciones.monto>0 then transacciones.monto else 0 end AS
haber,
0 AS saldo
FROM transacciones
ORDER BY clase DESC, emision, referencia, nombre

esta es la tabla y donde dice 0 AS saldo es dond equiero poner el
acumulado
de los registros anteriores

Gracias estoy estudiando tu ejemplo

Bárbara González
Venezuela.-
"Alejandro Mesa" escribió en el
mensaje news:
> Bárbara,
>
> Pudieramos ver la definicion de la tabla?
>
> Ejemplo:
>
> use northwind
> go
>
> create table dbo.t (
> colA int not null identity unique,
> colB int not null,
> colC int not null,
> )
> go
>
> insert into t (colB, colC) values(1, 100)
> insert into t (colB, colC) values(1, -100)
> insert into t (colB, colC) values(1, 200)
> insert into t (colB, colC) values(1, -100)
> insert into t (colB, colC) values(1, 50)
> insert into t (colB, colC) values(1, 25)
> insert into t (colB, colC) values(2, 1000)
> insert into t (colB, colC) values(2, -100)
> insert into t (colB, colC) values(2, 300)
> insert into t (colB, colC) values(2, -100)
> insert into t (colB, colC) values(2, 150)
> insert into t (colB, colC) values(2, -25)
> go
>
> select
> a.colA,
> a.colB,
> a.colC,
> sum(b.colC) as acumulado
> from
> t as a
> left join
> t as b
> on a.colB = b.colB and b.colA <= a.colA
> group by
> a.colA,
> a.colB,
> a.colC
> order by
> a.colA,
> a.colB
> go
>
> drop table t
> go
>
>
> AMB
>
>
> "Bárbara González" wrote:
>
>> Saludos al grupo
>> Estoy haciendo la presentación de una tabla pero necesito que en una
>> de
>> las
>> columnas se valla llevando el acumulado de una columna monto, algo asi
>> como
>> debe, haber, saldo en donde saldo es la suma de los anteriores
>> registro.
>> He
>> podido hacer que me lo haga con una subconsulta en el campo saldo,
>> pero
>> no
>> logro validar que no me tome los siguientes registros. Alguien puede
>> ayudarme para no hacerlo por programación si no por una consulta SQL.
>> Claro
>> si se puede. Gracias de antemano
>>
>> Bárbara González
>> Venezuela.-
>>
>>
>>



Respuesta Responder a este mensaje
#5 José Antonio Muñoz
21/04/2005 - 13:14 | Informe spam
Hola al grupo,

Yo también necesito realizar este tipo de consultas y he probado el ejemplo
que pone Alejandro, ¡funciona! ¡es increible lo que el SQL puede hacer! y
además lo he probando realizando un filtro con la cláusula WHERE, sin
embargo cuando necesitas cambiar el orden de las filas, como dice Bárbara,
ya no funciona correctamente ya que los acumulados se desordenan.

Un saludo.

José Antonio Muñoz

"Bárbara González" escribió en el mensaje
news:
No tengo nada que identifique un registro de otro solo un ID, que es un
numero que se genera consecutivo al crear el registro, pero este no estará
ordenado en la consulta ya que debo ordenar por clase que toma un valor 0
o 1 mas la fecha

Bárbara González
Venezuela.-
"Alejandro Mesa" escribió en el
mensaje news:
Bárbara,

Pudiera ver la definicion de la tabla?
Que columnas identitfican unicamente una fila en esta tabla?
Como identifico las filas anteriores a una fila especifica?

Disculpa, pero la sentencia select que posteastes no me dice nada sobre
estas preguntas.


AMB


"Bárbara González" wrote:

SELECT transacciones.clase AS clase,
transacciones.emision AS emision,
transacciones.referencia AS referencia,
transacciones.nombre AS descripcion,
case when transacciones.monto<0 then transacciones.monto else 0 end AS
debe,
case when transacciones.monto>0 then transacciones.monto else 0 end AS
haber,
0 AS saldo
FROM transacciones
ORDER BY clase DESC, emision, referencia, nombre

esta es la tabla y donde dice 0 AS saldo es dond equiero poner el
acumulado
de los registros anteriores

Gracias estoy estudiando tu ejemplo

Bárbara González
Venezuela.-
"Alejandro Mesa" escribió en
el
mensaje news:
> Bárbara,
>
> Pudieramos ver la definicion de la tabla?
>
> Ejemplo:
>
> use northwind
> go
>
> create table dbo.t (
> colA int not null identity unique,
> colB int not null,
> colC int not null,
> )
> go
>
> insert into t (colB, colC) values(1, 100)
> insert into t (colB, colC) values(1, -100)
> insert into t (colB, colC) values(1, 200)
> insert into t (colB, colC) values(1, -100)
> insert into t (colB, colC) values(1, 50)
> insert into t (colB, colC) values(1, 25)
> insert into t (colB, colC) values(2, 1000)
> insert into t (colB, colC) values(2, -100)
> insert into t (colB, colC) values(2, 300)
> insert into t (colB, colC) values(2, -100)
> insert into t (colB, colC) values(2, 150)
> insert into t (colB, colC) values(2, -25)
> go
>
> select
> a.colA,
> a.colB,
> a.colC,
> sum(b.colC) as acumulado
> from
> t as a
> left join
> t as b
> on a.colB = b.colB and b.colA <= a.colA
> group by
> a.colA,
> a.colB,
> a.colC
> order by
> a.colA,
> a.colB
> go
>
> drop table t
> go
>
>
> AMB
>
>
> "Bárbara González" wrote:
>
>> Saludos al grupo
>> Estoy haciendo la presentación de una tabla pero necesito que en una
>> de
>> las
>> columnas se valla llevando el acumulado de una columna monto, algo
>> asi
>> como
>> debe, haber, saldo en donde saldo es la suma de los anteriores
>> registro.
>> He
>> podido hacer que me lo haga con una subconsulta en el campo saldo,
>> pero
>> no
>> logro validar que no me tome los siguientes registros. Alguien puede
>> ayudarme para no hacerlo por programación si no por una consulta SQL.
>> Claro
>> si se puede. Gracias de antemano
>>
>> Bárbara González
>> Venezuela.-
>>
>>
>>









Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida