मैं एक एसक्यूएल 2005 मेज के लिए शो के आदेश, के यह आदेश फोन, प्रारूप में करते हैं:एसक्यूएल समूह, प्रत्येक दिन
OrderID, OrderDate, OrderAmount
1, 25/11/2008, 10
2, 25/11/2008, 2
3, 30/1002008, 5
तो मैं एक रिपोर्ट तालिका प्रत्येक पर आदेश दिया राशि दिखा उत्पादन की जरूरत है पिछले 7 दिनों में दिन:
Day, OrderCount, OrderAmount
25/11/2008, 2, 12
26/11/2008, 0, 0
27/11/2008, 0, 0
28/11/2008, 0, 0
29/11/2008, 0, 0
30/11/2008, 1, 5
SQL क्वेरी कि आम तौर पर इस का उत्पादन होगा:
select count(*), sum(OrderAmount)
from Orders
where OrderDate>getdate()-7
group by datepart(day,OrderDate)
में कोई समस्या है कि यह दिन जहां कोई आदेश देखते हैं छोड़ देगा:
Day, OrderCount, OrderAmount
25/11/2008, 2, 12
30/11/2008, 1, 5
आम तौर पर मैं इस एक संख्या तालिका और बाहरी का उपयोग कर ठीक हैं वहाँ पंक्तियों के खिलाफ में शामिल होने, लेकिन मैं वास्तव में इस के लिए एक सरल या अधिक कुशल समाधान के लिए देख रहा हूँ । ऐसा लगता है कि एक रिपोर्ट पूछताछ के लिए ऐसी सामान्य आवश्यकता है कि कुछ सुरुचिपूर्ण समाधान पहले से ही इसके लिए उपलब्ध होना चाहिए।
तो: 1. इस परिणाम मिलान तालिकाओं का उपयोग किए बिना एक साधारण क्वेरी से प्राप्त किया जा सकता है?
और 2. यदि नहीं, तो क्या हम फ्लाई पर इस टैली टेबल (विश्वसनीय रूप से) बना सकते हैं (मैं सीटीई का उपयोग करके एक टैली टेबल बना सकता हूं लेकिन रिकर्स स्टैक मुझे 100 पंक्तियों तक सीमित करता है)?
आपका उदाहरण का चयन तारीख की जानकारी अस्वीकार करते हैं। –
दिन के अनुसार एसक्यूएल समूह, रात तक अपराध लड़ने वाली टीम –
इस लिंक में दिन के दिन-दर-दिन - दिन के दिन - दिन के दिन एक्सपल्स के साथ विस्तार से डेटा एकत्र करने की पूरी जानकारी है। http://sqlserverlearner.com/2012/group-by-day-with-examples –