Бих започнал с изграждането на таблица с числа, съдържаща последователни цели числа от 1 до милион или нещо повече. Те са много полезни, след като се овладеете.
Например, ето как да получите 1-во число на всеки месец през 2008 г.:
select firstOfMonth = dateadd( month, n - 1, '1/1/2008')
from Numbers
where n <= 12;
Сега можете да съберете това с помощта на OUTER APPLY, за да намерите най-новата транзакция за всяка дата по следния начин:
with Dates as (
select firstOfMonth = dateadd( month, n - 1, '1/1/2008')
from Numbers
where n <= 12
)
select d.firstOfMonth, t.TransactionValue
from Dates d
outer apply (
select top 1 TransactionValue
from Transactions
where TransactionDate <= d.firstOfMonth
order by TransactionDate desc
) t;
Това трябва да ви даде това, което търсите, но може да се наложи да потърсите малко в Google, за да намерите най-добрия начин да създадете таблица с числата.