मैं SQL सर्वर में group by's
के साथ स्ट्रिंग को जोड़ने के लिए उपयोगकर्ता परिभाषित कुल बनाने के लिए this MSDN page से कोड का उपयोग कर रहा हूं। मेरी आवश्यकताओं में से एक यह है कि समेकित मूल्यों का क्रम क्वेरी में जैसा ही है। उदाहरण के लिए:एसक्यूएल उपयोगकर्ता संरक्षित मूल्यों के कुल क्रम परिभाषित?
Value Group
1 1
2 1
3 2
4 2
का उपयोग करना क्वेरी
SELECT
dbo.Concat(tbl.Value) As Concat,
tbl.Group
FROM
(SELECT TOP 1000
tblTest.*
FROM
tblTest
ORDER BY
tblTest.Value) As tbl
GROUP BY
tbl.Group
परिणाम होगा में:
Concat Group
"1,2" 1
"3,4" 2
परिणाम हमेशा सही बाहर आने के लिए और अपेक्षा के अनुरूप लगता है, लेकिन की तुलना में मैं this page में आए जो यह बताता है कि आदेश की गारंटी नहीं है और यह विशेषता SqlUserDefinedAggregateAttribute.IsInvariantToOrder
केवल भविष्य के उपयोग के लिए आरक्षित है।
तो मेरा सवाल यह है: क्या यह मानना सही है कि स्ट्रिंग में समेकित मान किसी भी क्रम में समाप्त हो सकते हैं?
यदि ऐसा है तो एमएसडीएन पृष्ठ पर उदाहरण कोड IsInvariantToOrder
विशेषता का उपयोग क्यों करता है?
अपने एमएस सवाल का जवाब नहीं कर सकते, लेकिन 'GROUP_CONCAT' आप संयोजन के बारे में नियतात्मक हो सकते हैं। –
@kerrek - ध्यान दें कि यह 'एसक्यूएल सर्वर' नहीं है 'MySQL' – JNK
मुझे डर है कि SQL सर्वर 2008 – Magnus