残高の履歴を履歴テーブルに保存するシステムがあります。テーブルには、口座番号、ソート コード、残高、残高開始日、残高終了日があります。残高が更新されると、残高、その残高が最初に開始された日付、および残高が変更された日付を示すエントリが履歴テーブルに作成されます。したがって、たとえば、テーブルには $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