Recalculo de saldo

23/10/2004 - 00:25 por LS - Sistemas | Informe spam
La pregunta es si puede hacerse en una sola sentencia SQL o debo recurrir a
un SP para hacer que se recalcule el saldo en una tabla con la siguiente
estructura:

Fecha,debe,haber,saldo

donde el saldo_fila = saldo_fila_anterior + debe_fila - haber_fila.
La fila insertada puede caer en cualquier lugar, no necesariamente al final,
y todo obviamente ordenado por fecha.

Lo tengo armado con un SP, pero no encuentro como hacerlo en una sola
sentencia.

Gracias

Leandro Sponton
Goya - Argentina

Preguntas similare

Leer las respuestas

#1 MAXI
23/10/2004 - 00:36 | Informe spam
Hola, poder se puede hacer, aca lo importante es saber cual es el orden de
los registros, o sea: cuando decis por el registro anterior, que es eso?

La fecha?




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"LS - Sistemas" escribió en el mensaje
news:
La pregunta es si puede hacerse en una sola sentencia SQL o debo recurrir
a
un SP para hacer que se recalcule el saldo en una tabla con la siguiente
estructura:

Fecha,debe,haber,saldo

donde el saldo_fila = saldo_fila_anterior + debe_fila - haber_fila.
La fila insertada puede caer en cualquier lugar, no necesariamente al
final,
y todo obviamente ordenado por fecha.

Lo tengo armado con un SP, pero no encuentro como hacerlo en una sola
sentencia.

Gracias

Leandro Sponton
Goya - Argentina



Respuesta Responder a este mensaje
#2 Carlos Alfonso García
23/10/2004 - 00:50 | Informe spam
Podrías por favor decribir un poco el SP que deseas
reemplazar ?
La pregunta es si puede hacerse en una sola sentencia SQL


o debo recurrir a
un SP para hacer que se recalcule el saldo en una tabla


con la siguiente
estructura:

Fecha,debe,haber,saldo

donde el saldo_fila = saldo_fila_anterior + debe_fila -


haber_fila.
La fila insertada puede caer en cualquier lugar, no


necesariamente al final,
y todo obviamente ordenado por fecha.

Lo tengo armado con un SP, pero no encuentro como hacerlo


en una sola
sentencia.

Gracias

Leandro Sponton
Goya - Argentina



.

Respuesta Responder a este mensaje
#3 LS - Sistemas
23/10/2004 - 01:17 | Informe spam
Este es el SP:

CREATE PROCEDURE dbo.recsaldo AS

DECLARE @SALDOANT NUMERIC(13,4)
DECLARE @FECHAMOV DATETIME

SET @FECHAMOV = CONVERT(DATETIME, '2000-02-01 00:00:00', 102)
SET @SALDOANT = (SELECT TOP 1 SALDO FROM dbo.view1 WHERE (fecha <
@FECHAMOV) ORDER BY FECHA DESC)
SET @SALDOANT = ISNULL(@SALDOANT, 0.00)
UPDATE dbo.view1 SET @SALDOANT = dbo.view1.saldo = @SALDOANT +
dbo.view1.debe - dbo.view1.haber WHERE (fecha >= @FECHAMOV)
GO

Se supone que la fecha ( '2000-02-01 00:00:00') viene como parametro

la vista usada es:

CREATE VIEW dbo.VIEW1
AS
SELECT dbo.tabla.*
FROM dbo.tabla WITH (INDEX (CUENTA))

donde CUENTA es un indice por fecha

Gracias

Leandro Sponton
Goya - Argentina
Respuesta Responder a este mensaje
#4 Eric Garza
23/10/2004 - 03:33 | Informe spam
LS:

Sí se puede, pero me parece que ese tipo de cálculo no corresponde a la base
de datos.

De cualquier manera aquí hay DDL para que lo pruebes:

CREATE TABLE Tabla(Fecha datetime, Debe money, Haber money, Saldo money)
CREATE INDEX IX_Tabla ON Tabla (Fecha)

INSERT Tabla VALUES('2004-10-01', 0, 1000, NULL)
INSERT Tabla VALUES('2004-10-02', 50, 0, NULL)
INSERT Tabla VALUES('2004-10-03', 100, 0, NULL)
INSERT Tabla VALUES('2004-10-04', 100, 0, NULL)
INSERT Tabla VALUES('2004-10-05', 0, 1000, NULL)
INSERT Tabla VALUES('2004-10-06', 400, 0, NULL)

UPDATE Tabla
SET Saldo = (
SELECT SUM(Debe-Haber) FROM Tabla T WHERE Fecha<=Tabla.Fecha
)

SELECT * FROM Tabla

DROP TABLE Tabla


Saludos,
Eric Garza
AMIGE

"LS - Sistemas" wrote in message
news:
La pregunta es si puede hacerse en una sola sentencia SQL o debo recurrir


a
un SP para hacer que se recalcule el saldo en una tabla con la siguiente
estructura:

Fecha,debe,haber,saldo

donde el saldo_fila = saldo_fila_anterior + debe_fila - haber_fila.
La fila insertada puede caer en cualquier lugar, no necesariamente al


final,
y todo obviamente ordenado por fecha.

Lo tengo armado con un SP, pero no encuentro como hacerlo en una sola
sentencia.

Gracias

Leandro Sponton
Goya - Argentina



Respuesta Responder a este mensaje
#5 MAXI
23/10/2004 - 04:48 | Informe spam
Eric, creo que la mejor forma es justamente hacerlo en la BDD mientras esto
no haga cursores claro esta!!

En que te basas para decir que no es para la BDD? porque yo creo que
justamente este tipo de cosas dentro de un SP son lo ideal




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"Eric Garza" escribió en el mensaje
news:
LS:

Sí se puede, pero me parece que ese tipo de cálculo no corresponde a la
base
de datos.

De cualquier manera aquí hay DDL para que lo pruebes:

CREATE TABLE Tabla(Fecha datetime, Debe money, Haber money, Saldo money)
CREATE INDEX IX_Tabla ON Tabla (Fecha)

INSERT Tabla VALUES('2004-10-01', 0, 1000, NULL)
INSERT Tabla VALUES('2004-10-02', 50, 0, NULL)
INSERT Tabla VALUES('2004-10-03', 100, 0, NULL)
INSERT Tabla VALUES('2004-10-04', 100, 0, NULL)
INSERT Tabla VALUES('2004-10-05', 0, 1000, NULL)
INSERT Tabla VALUES('2004-10-06', 400, 0, NULL)

UPDATE Tabla
SET Saldo = (
SELECT SUM(Debe-Haber) FROM Tabla T WHERE Fecha<=Tabla.Fecha
)

SELECT * FROM Tabla

DROP TABLE Tabla


Saludos,
Eric Garza
AMIGE

"LS - Sistemas" wrote in message
news:
La pregunta es si puede hacerse en una sola sentencia SQL o debo recurrir


a
un SP para hacer que se recalcule el saldo en una tabla con la siguiente
estructura:

Fecha,debe,haber,saldo

donde el saldo_fila = saldo_fila_anterior + debe_fila - haber_fila.
La fila insertada puede caer en cualquier lugar, no necesariamente al


final,
y todo obviamente ordenado por fecha.

Lo tengo armado con un SP, pero no encuentro como hacerlo en una sola
sentencia.

Gracias

Leandro Sponton
Goya - Argentina







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