2012-12-19 28 views
5

मैं कुछ है कि है, मुझे यकीन है, बहुत स्पष्ट कर रहा हूँ के खिलाफ मेरे सिर पिटाई कर रहा हूँ द्वारा समूह के साथ DatePart() का उपयोग कर -आदेश

मैं प्रत्येक की कुल बिक्री मूल्य का योग करने के लिए डिज़ाइन किया गया SQL कोड का एक सा है मेरे स्टोर में चालान और फिर इसे महीने तक व्यवस्थित करें।

select SUM(totalsellingprice) from dbo.tblServiceOrders 
where datepart(MONTH,dbo.tblServiceOrders.datereceived) =12 

जहां तक ​​मैं इसे समझता हूं, उसे 12 महीने (दिसंबर) से सभी totatlsellingprice की राशि वापस करनी चाहिए। वर्तमान में, इस क्वेरी देता

135998.92 

हालांकि, अगर मैं तो डाल करने के लिए है कि एक समूह में यह सब महीनों के लिए इसे थूक से बाहर करने के लिए से प्रयास करते हैं, संख्या बदल जाता है।

select SUM(totalsellingprice) from dbo.tblServiceOrders 
group by datepart(MONTH,dbo.tblServiceOrders.datereceived) 

और मैं इस तालिका मिल -

1 - 110567.70 
2 - 60059.59 
3 - 135998.92 
4 - 63089.22 
5 - 102287.01 
6 - 71088.68 
7 - 149102.10 
8 - 67722.65 
9 - 67122.45 
10 - 64234.82 
11 - 7542.05 
12 - 130461.10 

12 पंक्तियों, जो मेरे लिए अच्छा लगता है (एक वर्ष में 12 महीने) कर रहे हैं लेकिन अंतिम पंक्ति 130461.

कैसे है यह संभव है कि दूसरी खोज से पंक्ति 12 बराबर नहीं है जो मैंने पहली खोज में की थी? मुझे लगता है कि मुझे कुछ स्पष्ट याद आ रहा है लेकिन मैं अपने जीवन के लिए क्या नहीं समझ सकता।

किसी भी और सभी मदद की बहुत सराहना की जाएगी!

+0

क्या आप मुझे डेटटाइप और 'डेट्रेसीव' कॉलम का प्रारूप बता सकते हैं? – Mari

+1

मुझे ठीक लगता है ... हो सकता है कि कोई व्यक्ति 'कहां' का उपयोग करके क्वेरी निष्पादित करते समय 5537.82 डॉलर के लिए बेचा हो? (लाफ) –

उत्तर

13

मुझे मिल गया:

आपकी क्वेरी बहुत भ्रामक है, क्योंकि यह माह स्तंभ शामिल नहीं है:

तो क्या तुम करोगी ऐसा करने के बाद, आपको एहसास हुआ होगा कि आपकी क्वेरी को मॉन्थ द्वारा आदेश नहीं दिया गया है और इसलिए, माह 12 आपकी क्वेरी की तीसरी पंक्ति के रूप में वापस आ गया है।

;)

select SUM(totalsellingprice) from dbo.tblServiceOrders 
group by datepart(MONTH,dbo.tblServiceOrders.datereceived) 
order by datepart(MONTH,dbo.tblServiceOrders.datereceived) 

और कृपया, चुनने के लिए जो महीने जो राशि से संबंधित है पंक्ति सूचकांक का उल्लेख नहीं है। और वर्ष का भेदभाव करने के लिए एक अच्छा विचार होना चाहिए (यदि आपको आवश्यकता है)।

+0

हाहा। ओह आदमी। मैं यह पता लगाने की कोशिश कर रहा हूं कि क्या मैं एक ऐसे परिदृश्य के बारे में सोच सकता हूं जहां ग्रुप बाय पंक्तियों को खत्म कर रहा था ... – DeanGC

+0

+1 –

+0

@DeanGC का उल्लेख करने के लिए +1: हाहाहा मुझे भी, परीक्षणों का एक गुच्छा किया! >, <' –

0

भागो इस और देखो यह क्या करता है ...

select dateadd(month, datediff(month, 0, datereceived), 0), 
     Sum(totalsellingprice) 
from dbo.tblServiceOrders 
group by dateadd(month, datediff(month, 0, datereceived), 0)