SQL - Columna Acumulativa

 
Vista:

Columna Acumulativa

Publicado por Alejandro (1 intervención) el 08/02/2006 15:24:27
Hola

Lo que ando necesitando hacer es un SELECT de una tabla en donde yo tengo una columna monto y necesito que ademas de esa columna me muestre otra columna que me vaya acumulando el valor de esa columna monto, no se si me explico bien, les doy un ejemplo

columna monto columna monto acumulado
12 12
16 28
5 33
.........

Si alguien me puede dar una mano con esto se los voy a agradecer mucho.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Columna Acumulativa

Publicado por Isaías (5072 intervenciones) el 08/02/2006 18:33:57
Espero te ayude esta recomendación de Alejandro Mesa

-- Acmula el valor en una columna
-- D.R. Alejandro Mesa

use northwind
go

create table t1 (
Codigo varchar(15) not null unique,
Detalle varchar(25),
Importe money,
Porcentaje decimal (5, 2)
)
go

insert into t1 values('11111', 'xxxxxx', 100.00, 5.5)
insert into t1 values('88888', 'yyyyyy', 55.50, 4.8)
insert into t1 values('33333', 'aaaaaa', 55.00, 4.8)
insert into t1 values('99999', 'wweew', 40.00, 4.0)
go

select
a.codigo, a.detalle, a.importe, a.porcentaje,
sum(b.porcentaje) as porcentaje_acumulado
from
t1 as a
left join
t1 as b
on a.porcentaje < b.porcentaje
or (a.porcentaje = b.porcentaje and a.codigo >= b.codigo)
group by
a.codigo, a.detalle, a.importe, a.porcentaje
order by
a.porcentaje desc, a.codigo
go

drop table t1
go
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Columna Acumulativa

Publicado por Diego (1 intervención) el 31/03/2006 21:19:51
SELECT Data,
(
Select Sum(Valor) FROM DATOS B
WHERE B.Data < = A.Data
) AS Acumulado FROM DATOS A

Esto en SQL...

Si fuera en ORACLE:

/*SQL> SELECT
2 B.SAL
3 , SUM(A.SAL) ACUMULADO
4 FROM
5 EMP A
6 , EMP B
7 WHERE A.ROWID <= B.ROWID
8 GROUP BY B.ROWID, B.SAL
9 /

SAL ACUMULADO
---------- ----------
800 800
1600 2400
1250 3650
2975 6625
1250 7875
2850 10725
2450 13175
3000 16175
5000 21175
1500 22675
1100 23775
950 24725
3000 27725
1300 29025
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar