首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 累計值查詢:子查詢法與銀行帳戶實戰

     編輯:關於SqlServer

需求:交易表含存款(正)、取款(負),按時間序計算每筆後的餘額。

表結構

CREATE TABLE BankAccount (
  TransactionID INT IDENTITY PRIMARY KEY,
  TransactionDateTime DATETIME DEFAULT GETDATE(),
  Amount MONEY NOT NULL DEFAULT 0,
  TransactionType CHAR(1) NOT NULL, -- 'D'/'C'
  AccountNumber VARCHAR(50) NULL
);

單表累計查詢

SELECT transactionid, transactiondatetime, amount,
  (SELECT SUM(amount) FROM dbo.BankAccount AS D1
   WHERE D1.transactiondatetime <= D0.transactiondatetime) AS balance
FROM dbo.BankAccount AS D0;

結果:每行顯示截至該筆交易的累計餘額。

優勢

  • 無需儲存餘額欄位,隨查隨算,主鍵/外鍵查詢極快。
  • 每筆交易可逐行核對,異常即刻定位到導致問題的那筆。

擴充:多帳戶只需加 AccountNumber 過濾;存貨系統同理 (期初量 - 累計出貨)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved