ROW_NUMBER()
. का उपयोग करना सबसे आसान (और शायद सबसे कुशल) तरीका है :
SELECT [Date], Code, [Count] = ROW_NUMBER() OVER (PARTITION BY Code ORDER BY [Date])
FROM dbo.YourTableName
ORDER BY [Date];
मनोरंजन के लिए, आप इसे SQL Server 2012 में भी इस तरह से हल कर सकते हैं। यदि Date
अद्वितीय है:
SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date]
RANGE UNBOUNDED PRECEDING)
FROM dbo.YourTable
ORDER BY [Date];
या अधिक सरलता से:
SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date])
FROM dbo.YourTable
ORDER BY [Date];
अगर Date
अद्वितीय नहीं है, और यदि आप संबंध नहीं चाहते हैं (दिनांक+कोड के समान संयोजनों के लिए समान गणना), तो आपको अधिक महंगे ROWS
का उपयोग करने की आवश्यकता है , जो ऑन-डिस्क स्पूल पर उपयोग करता है:
SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date]
ROWS UNBOUNDED PRECEDING)
FROM dbo.YourTable
ORDER BY [Date];
प्रदर्शन कैसा है यह देखने के लिए आप अपनी तालिका में इनमें से प्रत्येक विकल्प को आज़माना चाह सकते हैं।