脚本根据存款和取款计算帐户余额

时间:2016-03-02 16:08:46

标签: sql sql-server

我对我的脚本有疑问,我的脚本部分很好地计算了特定的客户端,但我需要的是为所有客户做的而不要求客户数据需要更新其数量,因为适当的代码计算所有客户?

这是我的剧本:

    DECLARE @RFC VARCHAR(100)
DECLARE @Nombre VARCHAR(100)
DECLARE @Apellidos VARCHAR(100)
DECLARE @NoCuenta VARCHAR(50)

SET @RFC = ''
SET @Nombre = ''
SET @Apellidos = ''

--Suma de los depósitos
SELECT SUM(Monto) FROM [dbo].[Depositos] a
INNER JOIN [dbo].[Clientes] b
ON a.CuentaId = b.ClienteId
WHERE  b.Nombre = @Nombre and b.RFC = @RFC and b.Apellidos = @Apellidos and 

--sum of retires

SELECT SUM(Monto) FROM [dbo].[Retiros] a
INNER JOIN [dbo].[Clientes] b
ON a.CuentaId = b.ClienteId
WHERE b.Nombre = @Nombre and b.RFC = @RFC and b.Apellidos = @Apellidos

--Calculation of the total balance on the basis of deposits and withdrawals
DECLARE @Deposito DECIMAL
DECLARE @Retiro   DECIMAL
DECLARE @Total    DECIMAL
DECLARE @NoCuenta VARCHAR(50)

SET @Deposito = (SELECT SUM(Monto) FROM [dbo].[Depositos] a
INNER JOIN [dbo].[Clientes] b
ON a.CuentaId = b.ClienteId
WHERE b.Nombre = 'Marco' and b.RFC = 'sadfasfasfadsf')

SET @Retiro = (
SELECT SUM(Monto) FROM [dbo].[Retiros] a
INNER JOIN [dbo].[Clientes] b
ON a.CuentaId = b.ClienteId
WHERE b.Nombre = 'Marco' and b.RFC = 'sadfasfasfadsf')

SET @Total = (@Deposito - @Retiro)
SELECT @Total

SET @NoCuenta = '123456'

UPDATE A SET 
Saldo = @Total FROM [dbo].[CuentasBancarias] A 
WHERE NoCuenta = @NoCuenta

SELECT * FROM [dbo].[CuentasBancarias] WHERE NoCuenta = @NoCuenta

表格:

databasebank

每个客户的数据:

enter image description here

1 个答案:

答案 0 :(得分:1)

UPDATE CuentasBancarias SET
    Saldo = 
        ISNULL((SELECT SUM(Monto) FROM [dbo].[Depositos] a INNER JOIN [dbo].[CuentasBancarias] ON a.CuentaId = CuentasBancarias.ClienteId), 0) 
        - 
        ISNULL((SELECT SUM(Monto) FROM [dbo].[Retiros] a INNER JOIN [dbo].[CuentasBancarias] ON a.CuentaId = CuentasBancarias.ClienteId), 0)