Visual Basic 6 プラットフォームから単一の SQL ステートメントを使用して、WHERE 句に基づいて合計列を選択および減算する単一のテーブルがあります。以下は説明です。よりよく説明するためのサンプル表を次に示します。
IDデポジット引落日 ACC01 1000 0 2012 年 10 月 10 日 ACC01 2000 0 2013/1/1 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 日未満の預金列の値を合計し、日付が 2013 年 1 月 1DepositBefore
日未満の出金列の値を合計してから(つまり)からWithDrawalBefore
減算したいWithdrawalBefore
DepositBefore
BalanceBefore = DepositBefore - WithrawalBefore
同じように、日付 >= 1/1/2013 の預金列のDepositAfter
合計値 as またWithdrawal
、日付 >= 1/1/2013 の列の値も合計する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 は接続です。ありがとう