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

#6 Ivan
16/06/2006 - 10:37 | Informe spam
Hola Carlos!

La vista funciona bien :-)))))))), muchas gracias te debo una

Ahora estoy intentando hacer una función (usando como base la logica de la
vista que me has enviado) que haga lo mismo si le paso un campo para ordenar
(mes o año por ejemplo) uno donde esten las cantidades a acumular y que me
devuelva el valor acumulado ya que esto lo voy a necesitar en varias tablas
y necesitaría que fuese una función, se puede hacer que un campo calculado
obtenga sus valores con una función asi??

Si lo consigo lo publicare para que el que lo necesite lo use, si no vendre
a pedir sopitas X-DDDDD

Una vez mas gracias por tu ayuda.

Un saludo,

Ivan


"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
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
#7 Carlos Sacristán
16/06/2006 - 11:06 | Informe spam
No entiendo muy bien lo que necesitas... ¿podrías volver a explicarlo?


Un saludo

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

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

La vista funciona bien :-)))))))), muchas gracias te debo una

Ahora estoy intentando hacer una función (usando como base la logica de la
vista que me has enviado) que haga lo mismo si le paso un campo para


ordenar
(mes o año por ejemplo) uno donde esten las cantidades a acumular y que me
devuelva el valor acumulado ya que esto lo voy a necesitar en varias


tablas
y necesitaría que fuese una función, se puede hacer que un campo calculado
obtenga sus valores con una función asi??

Si lo consigo lo publicare para que el que lo necesite lo use, si no


vendre
a pedir sopitas X-DDDDD

Una vez mas gracias por tu ayuda.

Un saludo,

Ivan


"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
> 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
#8 Ivan
19/06/2006 - 08:24 | Informe spam
Hola Carlos!

Nada me estaba liando yo solo con lo que me has dado me vale de momento,
muchas gracias por tu ayuda, espero que les sirva tambien a otros :-D

Un saludo,

Ivan


"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
No entiendo muy bien lo que necesitas... ¿podrías volver a explicarlo?


Un saludo

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

"Ivan" escribió en el mensaje
news:
> Hola Carlos!
>
> La vista funciona bien :-)))))))), muchas gracias te debo una
>
> Ahora estoy intentando hacer una función (usando como base la logica de


la
> vista que me has enviado) que haga lo mismo si le paso un campo para
ordenar
> (mes o año por ejemplo) uno donde esten las cantidades a acumular y que


me
> devuelva el valor acumulado ya que esto lo voy a necesitar en varias
tablas
> y necesitaría que fuese una función, se puede hacer que un campo


calculado
> obtenga sus valores con una función asi??
>
> Si lo consigo lo publicare para que el que lo necesite lo use, si no
vendre
> a pedir sopitas X-DDDDD
>
> Una vez mas gracias por tu ayuda.
>
> Un saludo,
>
> Ivan
>
>
> "Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
> news:
> > 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
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


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