SQL 中的银行交易

梅丽娜·夏尔马

我有一个名为 BankTransaction 的表:

Create table BankTransaction 
(
TransactionID int IDENTITY(1,1),
AccountNumber varchar(25) Not Null,
TransactionDate datetime not null Default getdate(), 
TransactionType varchar(25) Not Null,
TransactionAmount money Default '0',
BalanceAsOf money Default '0' ,
Primary Key(TransactionID) 
);


Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('123AABDF','Credit','22535.215');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('123AABDF','Debit','215.9');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('2256DF','Credit','500');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('2256DF','Debit','100');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('2351AV','Credit','5000');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('2351AV','Debit','100');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('123AABDF','Debit','235.215');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('2256DF','Credit','1000');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('2351AV','Credit','500');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('7865HNH','Credit','982000'); 

我想要的是,如果 TransactionType 是 Debit,则帐户具有相同的 AccountNumber,然后从 BalanceAsOf 中减去,如果 TransactionType 是 Credit,则添加到 BalanceAsOF:

这是我尝试过但不起作用的方法:

update bt
                        Set  BalanceAsOF = case 

                        when AccountNumber=AccountNumber and  TransactionType = 'Credit' 
                        then ( BalanceAsOf + TransactionAmount )
                        when  AccountNumber=AccountNumber AND TransactionType='Debit' 
                        then BalanceAsOf - TransactionAmount
                        End 
                        from
                        dbo.BankTransaction as bt

                        Select * From dbo.BankTransaction as p 
尼拉詹·博卡雷尔

这正是你应该做的

set nocount on;

Create table BankTransaction 
(
TransactionID int IDENTITY(1,1),
AccountNumber varchar(25) Not Null,
TransactionDate datetime not null Default getdate(), 
TransactionType varchar(25) Not Null,
TransactionAmount money Default '0',
BalanceAsOf money Default '0' ,
Primary Key(TransactionID) 
);


Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('123AABDF','Credit','22535.215');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('123AABDF','Debit','215.9');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('2256DF','Credit','500');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('2256DF','Debit','100');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('2351AV','Credit','5000');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('2351AV','Debit','100');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('123AABDF','Debit','235.215');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('2256DF','Credit','1000');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('2351AV','Credit','500');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('7865HNH','Credit','982000');

Insert into dbo.BankTransaction(AccountNumber,TransactionType,TransactionAmount) 
Values ('876YYT','Credit','27363647');


  Create Table #AccountNomber (
  AccountNumber varchar(25) Not Null,);

insert into #AccountNomber ( AccountNumber)
Select  Distinct BT.AccountNumber 
  From dbo.BankTransaction as BT 

  --select * from #AccountNomber


   Declare @PreviousBalance money
   Set @PreviousBalance = 0 

   declare @AcctNumber varchar(25)
   declare @TransactionId int

     --update b 
     --set b.BalanceAsOf=0
     --from BankTransaction b

   while exists(select 1 from #AccountNomber)
   begin
     select @AcctNumber = a.AccountNumber from #AccountNomber a

     --select 'test',* from BankTransaction b
     --where b.AccountNumber=@AcctNumber
     --and b.BalanceAsOf=0
     --order by b.TransactionID
     --/*
     while exists (select 1 from BankTransaction b where b.AccountNumber=@AcctNumber
     and b.BalanceAsOf=0
     )
     begin
     select @TransactionId = (select top 1 b.TransactionID from BankTransaction b
     where b.AccountNumber=@AcctNumber
     and b.BalanceAsOf=0
     order by b.TransactionID)

     select @PreviousBalance =@PreviousBalance + case when b.TransactionType='Credit' then b.TransactionAmount else -1*b.TransactionAmount end
     from BankTransaction b
     Where b.AccountNumber=@AcctNumber
     and b.TransactionID=@TransactionId

     update b 
     set b.BalanceAsOf=@PreviousBalance
     from BankTransaction b
     Where b.AccountNumber=@AcctNumber
     and b.TransactionID=@TransactionId

     end
    select @PreviousBalance =0
    delete a from #AccountNomber a
    where a.AccountNumber=@AcctNumber

   End





   select * from BankTransaction b
   order by b.TransactionID

   Drop table BankTransaction 
   drop table #AccountNomber

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

DynamoDB用于银行交易

在BigQuery / SQL中测试交易条目

vb.net中的SQL交易语句

SQL选择客户,有交易和无交易的交易中的项目

如何计算Oracle SQL中属于一个用户的银行帐户数量

从Google表格中的银行交易清单中找到供应商

SQL-排除新行中已退款的交易

从SQL中的子查询获取每月总交易量

在 SQL 减法交易中创建流动账户余额

使用 sql 从交易细节中获取贷方和借方

是否有API可以获取银行交易和银行余额?

创建“银行交易”并应用特定规则

银行交易的域和服务方法

Xslt处理银行帐户交易

rails中如何在银行账户申请中添加账户模型和交易模型之间的关联?

SQL确定今天是否是银行假期

查询DBpedia中的银行

Oracle SQL:从字段分隔记录分隔字符串列中解析交易金额

如何在SQL VBA中查找最近30天交易的总收入?

SQL Server中每个客户的交易日期时间顺序的累积净流出量

客户帐户余额如何受到SQL Server中客户交易表的影响?

在 SQL 中獲取用戶的餘額和用戶的第一個交易日期

如何使用PHP SDK从Quickbooks获得银行交易?

银行应用程序的交易模块-已回答

SQL | 将商店现金与银行现金相匹配

MySQL每月获取累积的客户交易(不是SQL交易)

在 bigquery 或 sql 中查找已购买客户的比率和来自多个客户的平均交易天数差距

如何编写SQL查询以获取交易金额?

SQL根据库存和交易计算余额