【发布时间】:2012-03-21 20:48:27
【问题描述】:
我使用的是 SQL Server 2005。我有两个表 -
1. tbl_Customer
- CustId INT,
- Name VARCHAR(40)
2. tbl_Transaction
- TransId INT,
- CustId INT,
- TranDate DATETIME
- DebitAmount NUMERIC(8,2),
- CreditAmount NUMERIC(8,2)
tbl_Customer的数据
CustId Name
1 ST
2 JS
3 MA
tbl_Transaction的数据
TransId CustId Tdate DtAmt CrAmt
101 1 1/1/2012 250 100
102 1 1/2/2012 0 100
103 1 1/2/2012 0 50
104 2 1/2/2012 400 200
105 2 1/3/2012 0 150
106 2 1/3/2012 0 40
107 2 1/4/2012 0 10
108 1 1/1/2012 350 50
109 1 1/2/2012 0 200
110 1 1/2/2012 0 100
111 2 1/10/2012 500 300
112 2 1/10/2012 0 120
我想从最后一个零余额开始查找每个客户的余额。第一行的余额是 (DebitAmount - CreditAmount),然后是下一行的 (Balance - CreditAmount)。所以查询后的结果应该是这样的 -
TransId CustId Transdate DtAmt CrAmt Balance
108 1 1/1/2012 350 50 300
109 1 1/2/2012 0 200 100
110 1 1/2/2012 0 100 0
111 2 1/10/2012 500 300 200
112 2 1/11/2012 0 120 80
现在主要是,我想搜索客户并在结果中显示每个客户的最新余额。如果没有余额(tbl_transaction 中没有可用的交易),余额应该为空。所以最终的结果应该是这样的。
CustId Name Balance
1 ST 0
2 JS 80
3 MA NULL
我希望我已经非常清楚地阐述了我想要实现的目标。请给我指导如何实现这一目标。我是 SQL 新手,正在学习 RDBMS 的点点滴滴。提前谢谢你。
Ritesh
【问题讨论】:
标签: sql sql-server sql-server-2005