我有一个将余额历史存储在历史表中的系统。该表有帐号、排序代码、余额、余额开始日期、余额结束日期。当余额更新时,会在历史表中创建一个条目,其中显示余额、余额首次开始的日期以及显示余额更改的日期。例如,该表将显示 100.00 美元的余额,该余额从 2013 年 7 月 10 日到 2013 年 7 月 15 日。
我想要做的是在特定日期获取所有排序代码的余额总和,但是余额可能在这个日期没有改变,所以我需要返回最接近的前一个日期,但我失败了。
这是我到目前为止所尝试的。
declare @sdate datetime
set @sdate = '06/08/2012' --mm/dd/yyyy
SELECT CONVERT(varchar(20),MAX(StartDate),103) as "Closest Start Date", Sort, SUM(Balance) AS "Sum of balances"
FROM BalanceHistory
WHERE StartDate <= convert(smalldatetime ,@sdate) AND SortCode <> 'ABC123456'
GROUP BY SortCode
SELECT FROM BalanceHistory 会产生类似
AccountNumber, SortCode, Balance, StartDate, EndDate, RECID
00000001, srt010203, 100.00, 06/01/2013, 06/02/2013, RECID
00000001, srt010203, 110.00, 06/02/2013, 06/03/2013, RECID
00000001, srt010203, 120.00, 06/03/2013, 06/04/2013, RECID
00000002, srt010204, 200.00, 06/01/2013, 06/02/2013, RECID
00000003, srt010204, 300.00, 06/01/2013, 06/02/2013, RECID
00000004, srt010205, 400.00, 06/01/2013, 06/02/2013, RECID
00000005, srt010205, 500.00, 06/01/2013, 06/02/2013, RECID