यह एक बहुत अच्छा तरीका है और बहुत अच्छी तरह से स्वीकृत हो गया है। कई दृष्टिकोण हैं और यह ब्लॉग पोस्ट बहुत कुछ describes का वर्णन करता है उनमें से।
एक दिलचस्प दृष्टिकोण जो मौजूद है, वह आपके लिए काम करने के लिए सीएलआर का उपयोग कर रहा है जो बाहरी कोड चलाने के ट्रेड-ऑफ के साथ क्वेरी की जटिलता को काफी कम कर देगा। विधानसभा में कक्षा कैसी दिख सकती है, इसका एक नमूना यहां दिया गया है।
using System;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System.IO;
using Microsoft.SqlServer.Server;
[Serializable]
[SqlUserDefinedAggregate(Format.UserDefined, MaxByteSize=8000)]
public struct strconcat : IBinarySerialize{
private List values;
public void Init() {
this.values = new List();
}
public void Accumulate(SqlString value) {
this.values.Add(value.Value);
}
public void Merge(strconcat value) {
this.values.AddRange(value.values.ToArray());
}
public SqlString Terminate() {
return new SqlString(string.Join(", ", this.values.ToArray()));
}
public void Read(BinaryReader r) {
int itemCount = r.ReadInt32();
this.values = new List(itemCount);
for (int i = 0; i <= itemCount - 1; i++) {
this.values.Add(r.ReadString());
}
}
public void Write(BinaryWriter w) {
w.Write(this.values.Count);
foreach (string s in this.values) {
w.Write(s);
}
}
}
और यह एक क्वेरी को कुछ इस तरह से शुद्ध करेगा।
SELECT CategoryId,
dbo.strconcat(ProductName)
FROM Products
GROUP BY CategoryId ;
जो स्पष्ट रूप से थोड़ा सा सरल है। इसके लायक क्या है इसके लिए इसे लें :)
शुभ दिन!