suma acumulada

25/08/2005 - 17:51 por Looser | Informe spam
me gustaria obtener los resultado de acumulado y almacenarlos en una
columna

me explico
select valor,(algo) as resultado_esperado from vista order by .

valor | resultado_esperado
2 |2
1 |3
5 |10
4 |14
3 |17

Preguntas similare

Leer las respuestas

#1 Tinoco
25/08/2005 - 18:08 | Informe spam
Se puede hacer algo como esto para calcular la sumatoria y almacenarla en una
tabla:

Insert into Tabla1
Select Valor1, SUM(ValoraSumar)
From Tabla2
Group by Valor1

Si el problema es actualizar una tabla se puede hacer algo como:

Update TABLA1
Set Valor2 = ValorSumado
FROM (Select Valor1 as Valor1_ID, SUM(ValoraSumar) ValorSumado
From TABLA2
Group by Valor1)
Where Valor1 = Valor1_ID

Espero que esto sea lo que necesitas...

Hermilson Tinoco.
Colombia


"Looser" wrote:

me gustaria obtener los resultado de acumulado y almacenarlos en una
columna

me explico
select valor,(algo) as resultado_esperado from vista order by .

valor | resultado_esperado
2 |2
1 |3
5 |10
4 |14
3 |17


Respuesta Responder a este mensaje
#2 Looser
25/08/2005 - 18:20 | Informe spam
lo que quiero hacer es en un select que me vaya sumando el total
acumulado de los registros seleccionados

valor | resultado_esperado
2 |2
1 |3
5 |10
4 |14
3 |17

por ahora no necesito q inserte ni actualice
Respuesta Responder a este mensaje
#3 Tinoco
25/08/2005 - 19:05 | Informe spam
Solo se me ocurren dos formas:

* con cursores
* utilizando una tabla temporal y un while, me gusta mas esta opcion. Algo
como:

create table #tbl
(
ind smallint default 0,
num int,
suma int default 0
)

insert into #tbl (num) values(2)
insert into #tbl (num) values(1)
insert into #tbl (num) values(5)
insert into #tbl (num) values(3)
insert into #tbl (num) values(4)

update #tbl
set ind = 1,
suma = num
Where num in (select top 1 num
from #tbl)

while exists ( select 1
From #tbl
Where ind = 0
)
Begin
update #tbl
set ind = 1,
suma = f_sum + num
From (Select sum(num) f_sum
From #tbl
Where ind = 1) tbl1
Where num in (select top 1 num
from #tbl
where ind = 0)
End

select * from #tbl

Drop table #tbl

Hermilson Tinoco.
Colombia


"Looser" wrote:

lo que quiero hacer es en un select que me vaya sumando el total
acumulado de los registros seleccionados

valor | resultado_esperado
2 |2
1 |3
5 |10
4 |14
3 |17

por ahora no necesito q inserte ni actualice


Respuesta Responder a este mensaje
#4 Pablodegerli
25/08/2005 - 19:34 | Informe spam
Tambien algo asi

create table #tbl ( Id int identity(1,1), valor int)
insert into #tbl (valor) select Valor from TuTabla
select Valor, (select sum(Valor) from #tbl where id <= P.Id ) Sumatoria from
#tbl P order by id
drop table #tbl


"Looser" escribió en el mensaje
news:
lo que quiero hacer es en un select que me vaya sumando el total
acumulado de los registros seleccionados

valor | resultado_esperado
2 |2
1 |3
5 |10
4 |14
3 |17

por ahora no necesito q inserte ni actualice

Respuesta Responder a este mensaje
#5 Alejandro Mesa
25/08/2005 - 20:01 | Informe spam
En sql server la data es almacenada sin ningun orden (bueno, si usas un
indice clustered entonces la cosa cambia pero no viene al caso) por lo que
necesitariamos algun criterio extra para saber que el valor 4 va despues del
5. En tu caso si la tabla ya esta creada y no tienes una clave primaria,
entonces puedes alterar la tabla y adicionar una columna identity unica. Si
la tabla tiene clave primaria entonces puedes usarla en la sentencia select,
reemplazando la columna identity usada.

create table t1 (
pk int not null identity primary key,
valor int not null
)
go

insert into t1(valor) values(2)
insert into t1(valor) values(1)
insert into t1(valor) values(5)
insert into t1(valor) values(4)
insert into t1(valor) values(3)
go

select
a.valor,
sum(b.valor) as sum_acumulada
from
t1 as a
inner join
t1 as b
on b.pk <= a.pk
group by
a.valor
order by
max(a.pk)
go

drop table t1
go


AMB

"Looser" wrote:

lo que quiero hacer es en un select que me vaya sumando el total
acumulado de los registros seleccionados

valor | resultado_esperado
2 |2
1 |3
5 |10
4 |14
3 |17

por ahora no necesito q inserte ni actualice


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