2011-04-28 9 views
7

शीर्षक की तरह कहा, यहां मेरे कोड है:, वहाँ वैसे भी इस के आसपास पाने के लिएक्या ग्रुप बाय में कॉलम द्वारा ORDER का उपयोग करना संभव है?

SELECT 
    material, 
    SUM([Amount]) AS [Amount], 
    RIGHT(CONVERT(varchar(50), [date_in], 106), 8) 
FROM 
    [rec_stats] 
GROUP BY 
    material, 
    RIGHT(CONVERT(varchar(50), [date_in], 106), 8) 
ORDER BY 
    material,date_in 

कोड अभ्यस्त date_in की वजह से चलाया जाता है?

उत्तर

19

एक और कुल लागू करें, तो कैसे के बारे में;

order by min([date_in]) 
+1

आश्चर्य है कि इसके बारे में क्यों नहीं सोचा था ... धन्यवाद! : डी – dreamer

0

आप केवल एक चुनिंदा कथन में उपयोग करने के लिए संभव है कि आदेश दे सकते हैं। चयन विवरण में डेट_इन स्वयं संभव नहीं है ताकि आप इसका उपयोग न कर सकें। अपने आरडीबीएमएस के आधार पर आप निम्न कर सकते हैं:

SELECT 
material, 
    SUM([Amount]) AS [Amount], 
    RIGHT(CONVERT(varchar(50), [date_in], 106), 8) 
FROM 
    [rec_stats] 
GROUP BY 
    material, 
    RIGHT(CONVERT(varchar(50), [date_in], 106), 8) 
ORDER BY 
    material,RIGHT(CONVERT(varchar(50), [date_in], 106), 8) 
+0

लेकिन वह यह वर्णानुक्रम यह ऑर्डर करने के लिए कारण होगा, क्योंकि यह varchar में बदल दिया गया, मैं की जरूरत है यह तिथि के अनुसार क्रमबद्ध किया जाना है ... – dreamer

1

एक ही अभिव्यक्ति आप द्वारा समूहीकरण रहे द्वारा आदेश।

DATE महीने के प्रतिनिधित्व पर समूह और व्यवस्था करना बेहतर है।

SQL Server 2008 में होगा:

SELECT material, SUM([Amount]) AS [Amount], DATEADD(d, 1 - DAY(GETDATE()), CAST(GETDATE() AS DATE)) 
FROM [rec_stats] 
GROUP BY 
     material, 
     DATEADD(d, 1 - DAY(GETDATE()), CAST(GETDATE() AS DATE)) 
ORDER BY 
     material, DATEADD(d, 1 - DAY(GETDATE()), CAST(GETDATE() AS DATE)) 
+0

लेकिन यह है कि यह इसे वर्णानुक्रम में ऑर्डर करने का कारण बनता है क्योंकि इसे वर्चर में परिवर्तित कर दिया गया है, मुझे तारीख से आदेश देने की आवश्यकता है ... – dreamer

+0

@ ड्रीमर: यह yyyy-mm-dd प्रारूप की सुंदरता है; लेक्सिकल ऑर्डरिंग क्रोनोलॉजिकल ऑर्डरिंग है। :) –

0

क्या आप महीने भर में एकत्र करने की कोशिश कर रहे हैं? यदि हां, तो कोशिश:

SELECT 
    material, 
    SUM([Amount]) AS [Amount], 
    DATEPART(year, [date_in]) as y, 
    DATEPART(month, [date_in]) as m, 
    DATEPART(month, [date_in]) + ' ' + DATEPART(year, [date_in]) AS MonthYearCombined 
FROM 
    [rec_stats] 
GROUP BY 
    material, 
    DATEPART(year, [date_in]), 
    DATEPART(month, [date_in]) 
ORDER BY 
    material,y,m 

ध्यान दें: आप "MonthYearCombined" स्तंभ में मान परिवर्तित करने के लिए हो सकता है - मैं वास्तव में की सिफारिश करेंगे आप है कि कोड में नहीं बल्कि एसक्यूएल से है, लेकिन यह करने के लिए कुछ संदर्भ शामिल करना चाहता था।

0

आप अपनी मूल क्वेरी की तरह date_in कॉलम से निपट नहीं सकते हैं। बल्कि, आप घोंसला क्वेरी कर सकते हैं और इस तरह से इसे पढ़ा:

SELECT 
    material, 
    SUM([Amount]) AS [Amount], 
    RIGHT(CONVERT(varchar(50), [date_in], 106), 8) 
FROM 
(
Select material, Amount, RIGHT(CONVERT(varchar(50), [date_in], 106), 8) as DateIn 
From [rec_stats] 
) X 
GROUP BY 
    material, 
    DateIn 
ORDER BY 
    material,DateIn 

मैं अपने देव वातावरण में यह परीक्षण नहीं कर सकते, लेकिन मेरा मानना ​​है कि यह आप विचार देता है।

0

उपयोग इस

order by 
1,2,3,4,5 
संबंधित मुद्दे