मैं अनुक्रमिक पूर्णांकों को 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 को थोड़ा चक्कर लगाना पड़ सकता है।