आप सही हैं कि दस्तावेज़ीकरण में कुछ भी ढूंढना मुश्किल है। लेकिन कनेक्ट वेबसाइट की खोज करने पर, मैं इस रत्न को खोजने में कामयाब रहा:
<ब्लॉकक्वॉट>आज, आप नियमित कुल कार्यों की तरह ही CLR समुच्चय का उपयोग OVER क्लॉज और PARTITION BY के साथ कर सकते हैं। एक बार हमारे पास विंडो फ़ंक्शंस के लिए समर्थन है...
जो माइक्रोसॉफ्ट की ओर से एक प्रतिक्रिया थी।
हालाँकि, कनेक्ट साइट पर खोज वही थी जो मैंने तब की थी जब मैं अपनी पुरानी मशीन के लिए एक नया डेटाबेस प्रोजेक्ट बनाने और इस समुच्चय को बनाने की प्रतीक्षा कर रहा था:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.IO;
using Microsoft.SqlServer.Server;
[Serializable]
[Microsoft.SqlServer.Server.SqlUserDefinedAggregate(Format.UserDefined,MaxByteSize = 2000)]
public struct SqlAggregate1 : IBinarySerialize
{
private SqlString last;
public void Init()
{
// Ignore
}
public void Accumulate(SqlString Value)
{
last = Value;
}
public void Merge (SqlAggregate1 Group)
{
// Ignore
}
public SqlString Terminate ()
{
// Put your code here
return last;
}
public void Read(BinaryReader r)
{
last = new SqlString(r.ReadString());
}
public void Write(BinaryWriter w)
{
w.Write(last.ToString());
}
}
और फिर इस स्क्रिप्ट को चलाएँ:
select dbo.SqlAggregate1(Column2) OVER (PARTITION BY Column1)
from (select 1,'abc' union all select 1,'def' union all
select 2,'ghi' union all select 2,'jkl') as t(Column1,Column2)
जो उत्पादन करता है:
------------
abc
abc
ghi
ghi
जो कहने का एक लंबा रास्ता है - आप केवल कोशिश करके . द्वारा आसानी से अपने लिए उत्तर खोज सकते थे यह।