我有一个表,我想使用 Visual basic 6 平台中的单个 SQL 语句根据 where 子句选择和减去求和列。下面是描述这里是一个示例表,可以更好地解释:
ID存款取款日期 ACC01 1000 0 2012 年 10 月 10 日 ACC01 2000 0 1/1/2013 ACC02 3000 0 2012 年 10 月 10 日 ACC02 4000 0 1/1/2013 ACC01 0 1000 2012 年 12 月 12 日 ACC02 0 3000 2012 年 12 月 12 日
我想将日期小于 2013 年 1 月 1 日的存款列中的值求和为日期小于 2013DepositBefore
年 1 月 1 日的提款列中的值,WithDrawalBefore
然后减去WithdrawalBefore
(DepositBefore
即BalanceBefore = DepositBefore - WithrawalBefore
)
同样,存款列中日期 >= 2013年 1 月 1 日的DepositAfter
总和为 日期 >= 2013 年 1 月 1 日的Withdrawal
列中的总和,WithdrawalAfter
因此 ( BalanceAfter = DepositAfter - WithdrawalAfter
)
最后计算BalanceForInterest = BalanceBefore + BalanceAfter
. 如果单个查询可以解决此问题,我会更喜欢提前致谢
下面是我尝试过但没有成功的代码。
With rsSaving
.Open "SELECT SUM(SUM(Deposit)-SUM(Withdrawal)) AS BalanceBefore FROM tblSaving WHERE ID = 'ACC01' AND Date < #1/1/2013# GROUP BY ID, (SELECT SUM(SUM(Deposit)-SUM(Withdrawal)) AS BalanceAfter FROM tblSaving WHERE ID='ACC01' AND Date >= #1/1/2013# GROUP BY ID)",conDB, adOpenDynamic, adLockOptimistic
.close
End With
set rsSaving = Nothing
rsSaving 是一个 ADO 对象,而 conDB 是我的连接。谢谢