Hacer un campo que acumule

14/06/2006 - 11:11 por Ivan | Informe spam
Hola a tod@s y gracias por leer mi mensaje

Tengo una vista que saca los stocks que ha habido por año (StocksAño) y
necesito tener una columna más donde se vayan acumulando los stocks, le doy
vueltas y no se ni por donde empezar (algo tan fácil de hacer en Excel me
esta quebrando la cabeza en SQL Server), ¿una función, un procedimiento
almacenado? bueno pero ¿como? seguro que hay alguna forma fácil pero mi
experiencia en programación con sql server es muy limitada y he estado
buscando por la red y no encuentro nada parecido, sois mi ultima esperanza

Bueno dejo de lloriquear :-DDD , lo que necesito es lo que veis ahi abajo,
si alguien me puede ayudar se lo agradecería.

Muchas gracias por adelantado..

StocksAño StocksTotales
0 0
0 0
0 0
0 0
0 0
-9000 -9000
-134381 -143381
42654 -100727
80076 -20651
60457 39806
-102380 -62574
100086 37512
222640 260152
14918 275070
67230 342300
252308 594608
-100591 494017

Preguntas similare

Leer las respuestas

#1 Carlos Sacristán
14/06/2006 - 11:48 | Informe spam
Pásanos el script de creación de las tablas y unos datos de ejemplo y te
podremos ayudar mejor


Un saludo

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

"Ivan" escribió en el mensaje
news:#
Hola a y gracias por leer mi mensaje

Tengo una vista que saca los stocks que ha habido por año (StocksAño) y
necesito tener una columna más donde se vayan acumulando los stocks, le


doy
vueltas y no se ni por donde empezar (algo tan fácil de hacer en Excel me
esta quebrando la cabeza en SQL Server), ¿una función, un procedimiento
almacenado? bueno pero ¿como? seguro que hay alguna forma fácil pero mi
experiencia en programación con sql server es muy limitada y he estado
buscando por la red y no encuentro nada parecido, sois mi ultima esperanza

Bueno dejo de lloriquear :-DDD , lo que necesito es lo que veis ahi abajo,
si alguien me puede ayudar se lo agradecería.

Muchas gracias por adelantado..

StocksAño StocksTotales
0 0
0 0
0 0
0 0
0 0
-9000 -9000
-134381 -143381
42654 -100727
80076 -20651
60457 39806
-102380 -62574
100086 37512
222640 260152
14918 275070
67230 342300
252308 594608
-100591 494017



Respuesta Responder a este mensaje
#2 Ivan
14/06/2006 - 12:31 | Informe spam
Hola Carlos y gracias por contestar

El script de creación de la tabla es:

if exists (select * from dbo.sysobjects where id object_id(N'[dbo].[DatosAños]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[DatosAños]
GO

CREATE TABLE [dbo].[DatosAños] (
[Año] [int] IDENTITY (1, 1) NOT NULL ,
[Mes] [int] NULL ,

[..]

[StocksAño] [int] NULL ,
[StocksTotales] [int] NULL , (este es el campo que deberia ir acumulando,
si StocksAño es positivo se sumaria al StocksTotales del año anterior dando
un nuevo valor para este año y en caso de ser negativo se restaría)

[..]

) ON [PRIMARY]
GO

Los datos de ejemplo son los que he dado antes, no hay más.

StocksAño StocksTotales
0 0
0 0
0 0
0 0
0 0
-9000 -9000
-134381 -143381
42654 -100727
80076 -20651
60457 39806
-102380 -62574
100086 37512
222640 260152
14918 275070
67230 342300
252308 594608
-100591 494017


Espero que me puedas ayudar y gracias otra vez..

Ivan




"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
Pásanos el script de creación de las tablas y unos datos de ejemplo y


te
podremos ayudar mejor


Un saludo

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

"Ivan" escribió en el mensaje
news:#
> Hola a y gracias por leer mi mensaje
>
> Tengo una vista que saca los stocks que ha habido por año (StocksAño) y
> necesito tener una columna más donde se vayan acumulando los stocks, le
doy
> vueltas y no se ni por donde empezar (algo tan fácil de hacer en Excel


me
> esta quebrando la cabeza en SQL Server), ¿una función, un procedimiento
> almacenado? bueno pero ¿como? seguro que hay alguna forma fácil pero mi
> experiencia en programación con sql server es muy limitada y he estado
> buscando por la red y no encuentro nada parecido, sois mi ultima


esperanza
>
> Bueno dejo de lloriquear :-DDD , lo que necesito es lo que veis ahi


abajo,
> si alguien me puede ayudar se lo agradecería.
>
> Muchas gracias por adelantado..
>
> StocksAño StocksTotales
> 0 0
> 0 0
> 0 0
> 0 0
> 0 0
> -9000 -9000
> -134381 -143381
> 42654 -100727
> 80076 -20651
> 60457 39806
> -102380 -62574
> 100086 37512
> 222640 260152
> 14918 275070
> 67230 342300
> 252308 594608
> -100591 494017
>
>
>


Respuesta Responder a este mensaje
#3 Carlos Sacristán
14/06/2006 - 13:22 | Informe spam
Si lo quieres guardar en un campo yo lo calcularía dentro del
procedimiento almacenado que inserte los datos en esta tabla, simplemente
recogiendo el acumulado del año anterior y sumándole la cantidad que te
pasen.

De todos modos, una posible solución a tu problema sería la siguiente
sentencia:

SELECT SUM(DISTINCT a.stocksaño) acum, a.año
FROM datosaños a INNER JOIN datosaños b on a.año <= b.año
GROUP BY a.año



Un saludo

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

"Ivan" escribió en el mensaje
news:
Hola Carlos y gracias por contestar

El script de creación de la tabla es:

if exists (select * from dbo.sysobjects where id > object_id(N'[dbo].[DatosAños]') and OBJECTPROPERTY(id, N'IsUserTable') 1)
drop table [dbo].[DatosAños]
GO

CREATE TABLE [dbo].[DatosAños] (
[Año] [int] IDENTITY (1, 1) NOT NULL ,
[Mes] [int] NULL ,

[..]

[StocksAño] [int] NULL ,
[StocksTotales] [int] NULL , (este es el campo que deberia ir acumulando,
si StocksAño es positivo se sumaria al StocksTotales del año anterior


dando
un nuevo valor para este año y en caso de ser negativo se restaría)

[..]

) ON [PRIMARY]
GO

Los datos de ejemplo son los que he dado antes, no hay más.

StocksAño StocksTotales
0 0
0 0
0 0
0 0
0 0
-9000 -9000
-134381 -143381
42654 -100727
80076 -20651
60457 39806
-102380 -62574
100086 37512
222640 260152
14918 275070
67230 342300
252308 594608
-100591 494017


Espero que me puedas ayudar y gracias otra vez..

Ivan




"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
> Pásanos el script de creación de las tablas y unos datos de ejemplo


y
te
> podremos ayudar mejor
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> "Ivan" escribió en el mensaje
> news:#
> > Hola a y gracias por leer mi mensaje
> >
> > Tengo una vista que saca los stocks que ha habido por año (StocksAño)


y
> > necesito tener una columna más donde se vayan acumulando los stocks,


le
> doy
> > vueltas y no se ni por donde empezar (algo tan fácil de hacer en Excel
me
> > esta quebrando la cabeza en SQL Server), ¿una función, un


procedimiento
> > almacenado? bueno pero ¿como? seguro que hay alguna forma fácil pero


mi
> > experiencia en programación con sql server es muy limitada y he estado
> > buscando por la red y no encuentro nada parecido, sois mi ultima
esperanza
> >
> > Bueno dejo de lloriquear :-DDD , lo que necesito es lo que veis ahi
abajo,
> > si alguien me puede ayudar se lo agradecería.
> >
> > Muchas gracias por adelantado..
> >
> > StocksAño StocksTotales
> > 0 0
> > 0 0
> > 0 0
> > 0 0
> > 0 0
> > -9000 -9000
> > -134381 -143381
> > 42654 -100727
> > 80076 -20651
> > 60457 39806
> > -102380 -62574
> > 100086 37512
> > 222640 260152
> > 14918 275070
> > 67230 342300
> > 252308 594608
> > -100591 494017
> >
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Ivan
14/06/2006 - 16:18 | Informe spam
Hola Carlos!

No me ha fucionado la vista que me has dado, ya que me da como resultado lo
mismo osea que stocksaño y acum son iguales..

Lo del procedimiento almacenado no lo puedo hacer ya que los datos se
introducen en la tabla directamente mediante una consulta en una BD Access..
:-(

Un saludo,

Ivan


"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
Si lo quieres guardar en un campo yo lo calcularía dentro del
procedimiento almacenado que inserte los datos en esta tabla, simplemente
recogiendo el acumulado del año anterior y sumándole la cantidad que te
pasen.

De todos modos, una posible solución a tu problema sería la siguiente
sentencia:

SELECT SUM(DISTINCT a.stocksaño) acum, a.año
FROM datosaños a INNER JOIN datosaños b on a.año <= b.año
GROUP BY a.año



Un saludo

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

"Ivan" escribió en el mensaje
news:
> Hola Carlos y gracias por contestar
>
> El script de creación de la tabla es:
>
> if exists (select * from dbo.sysobjects where id > > object_id(N'[dbo].[DatosAños]') and OBJECTPROPERTY(id, N'IsUserTable') > 1)
> drop table [dbo].[DatosAños]
> GO
>
> CREATE TABLE [dbo].[DatosAños] (
> [Año] [int] IDENTITY (1, 1) NOT NULL ,
> [Mes] [int] NULL ,
>
> [..]
>
> [StocksAño] [int] NULL ,
> [StocksTotales] [int] NULL , (este es el campo que deberia ir


acumulando,
> si StocksAño es positivo se sumaria al StocksTotales del año anterior
dando
> un nuevo valor para este año y en caso de ser negativo se restaría)
>
> [..]
>
> ) ON [PRIMARY]
> GO
>
> Los datos de ejemplo son los que he dado antes, no hay más.
>
> StocksAño StocksTotales
> 0 0
> 0 0
> 0 0
> 0 0
> 0 0
> -9000 -9000
> -134381 -143381
> 42654 -100727
> 80076 -20651
> 60457 39806
> -102380 -62574
> 100086 37512
> 222640 260152
> 14918 275070
> 67230 342300
> 252308 594608
> -100591 494017
>
>
> Espero que me puedas ayudar y gracias otra vez..
>
> Ivan
>
>
>
>
> "Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
> news:
> > Pásanos el script de creación de las tablas y unos datos de


ejemplo
y
> te
> > podremos ayudar mejor
> >
> >
> > Un saludo
> >
> > -
> > "Sólo sé que no sé nada. " (Sócrates)
> >
> > "Ivan" escribió en el mensaje
> > news:#
> > > Hola a y gracias por leer mi mensaje
> > >
> > > Tengo una vista que saca los stocks que ha habido por año


(StocksAño)
y
> > > necesito tener una columna más donde se vayan acumulando los stocks,
le
> > doy
> > > vueltas y no se ni por donde empezar (algo tan fácil de hacer en


Excel
> me
> > > esta quebrando la cabeza en SQL Server), ¿una función, un
procedimiento
> > > almacenado? bueno pero ¿como? seguro que hay alguna forma fácil pero
mi
> > > experiencia en programación con sql server es muy limitada y he


estado
> > > buscando por la red y no encuentro nada parecido, sois mi ultima
> esperanza
> > >
> > > Bueno dejo de lloriquear :-DDD , lo que necesito es lo que veis ahi
> abajo,
> > > si alguien me puede ayudar se lo agradecería.
> > >
> > > Muchas gracias por adelantado..
> > >
> > > StocksAño StocksTotales
> > > 0 0
> > > 0 0
> > > 0 0
> > > 0 0
> > > 0 0
> > > -9000 -9000
> > > -134381 -143381
> > > 42654 -100727
> > > 80076 -20651
> > > 60457 39806
> > > -102380 -62574
> > > 100086 37512
> > > 222640 260152
> > > 14918 275070
> > > 67230 342300
> > > 252308 594608
> > > -100591 494017
> > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#5 Carlos Sacristán
15/06/2006 - 08:48 | Informe spam
Es verdad, te envié la consulta incorrecta. Prueba con la siguiente:

SELECT a.año, a.mes, a.stocksaño, (SELECT SUM(stocksaño) FROM
datosaños WHERE a.año>=año) AS stockstotales FROM datosaños AS a


Un saludo

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

"Ivan" escribió en el mensaje
news:uU8$
Hola Carlos!

No me ha fucionado la vista que me has dado, ya que me da como resultado


lo
mismo osea que stocksaño y acum son iguales..

Lo del procedimiento almacenado no lo puedo hacer ya que los datos se
introducen en la tabla directamente mediante una consulta en una BD


Access..
:-(

Un saludo,

Ivan


"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
> Si lo quieres guardar en un campo yo lo calcularía dentro del
> procedimiento almacenado que inserte los datos en esta tabla,


simplemente
> recogiendo el acumulado del año anterior y sumándole la cantidad que te
> pasen.
>
> De todos modos, una posible solución a tu problema sería la


siguiente
> sentencia:
>
> SELECT SUM(DISTINCT a.stocksaño) acum, a.año
> FROM datosaños a INNER JOIN datosaños b on a.año <= b.año
> GROUP BY a.año
>
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> "Ivan" escribió en el mensaje
> news:
> > Hola Carlos y gracias por contestar
> >
> > El script de creación de la tabla es:
> >
> > if exists (select * from dbo.sysobjects where id > > > object_id(N'[dbo].[DatosAños]') and OBJECTPROPERTY(id, N'IsUserTable')
> 1)
> > drop table [dbo].[DatosAños]
> > GO
> >
> > CREATE TABLE [dbo].[DatosAños] (
> > [Año] [int] IDENTITY (1, 1) NOT NULL ,
> > [Mes] [int] NULL ,
> >
> > [..]
> >
> > [StocksAño] [int] NULL ,
> > [StocksTotales] [int] NULL , (este es el campo que deberia ir
acumulando,
> > si StocksAño es positivo se sumaria al StocksTotales del año anterior
> dando
> > un nuevo valor para este año y en caso de ser negativo se restaría)
> >
> > [..]
> >
> > ) ON [PRIMARY]
> > GO
> >
> > Los datos de ejemplo son los que he dado antes, no hay más.
> >
> > StocksAño StocksTotales
> > 0 0
> > 0 0
> > 0 0
> > 0 0
> > 0 0
> > -9000 -9000
> > -134381 -143381
> > 42654 -100727
> > 80076 -20651
> > 60457 39806
> > -102380 -62574
> > 100086 37512
> > 222640 260152
> > 14918 275070
> > 67230 342300
> > 252308 594608
> > -100591 494017
> >
> >
> > Espero que me puedas ayudar y gracias otra vez..
> >
> > Ivan
> >
> >
> >
> >
> > "Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el


mensaje
> > news:
> > > Pásanos el script de creación de las tablas y unos datos de
ejemplo
> y
> > te
> > > podremos ayudar mejor
> > >
> > >
> > > Un saludo
> > >
> > > -
> > > "Sólo sé que no sé nada. " (Sócrates)
> > >
> > > "Ivan" escribió en el mensaje
> > > news:#
> > > > Hola a y gracias por leer mi mensaje
> > > >
> > > > Tengo una vista que saca los stocks que ha habido por año
(StocksAño)
> y
> > > > necesito tener una columna más donde se vayan acumulando los


stocks,
> le
> > > doy
> > > > vueltas y no se ni por donde empezar (algo tan fácil de hacer en
Excel
> > me
> > > > esta quebrando la cabeza en SQL Server), ¿una función, un
> procedimiento
> > > > almacenado? bueno pero ¿como? seguro que hay alguna forma fácil


pero
> mi
> > > > experiencia en programación con sql server es muy limitada y he
estado
> > > > buscando por la red y no encuentro nada parecido, sois mi ultima
> > esperanza
> > > >
> > > > Bueno dejo de lloriquear :-DDD , lo que necesito es lo que veis


ahi
> > abajo,
> > > > si alguien me puede ayudar se lo agradecería.
> > > >
> > > > Muchas gracias por adelantado..
> > > >
> > > > StocksAño StocksTotales
> > > > 0 0
> > > > 0 0
> > > > 0 0
> > > > 0 0
> > > > 0 0
> > > > -9000 -9000
> > > > -134381 -143381
> > > > 42654 -100727
> > > > 80076 -20651
> > > > 60457 39806
> > > > -102380 -62574
> > > > 100086 37512
> > > > 222640 260152
> > > > 14918 275070
> > > > 67230 342300
> > > > 252308 594608
> > > > -100591 494017
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


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