gpt4 book ai didi

sql-server - 是否可以将用户定义的聚合(clr)与窗口函数(over)一起使用?

转载 作者:行者123 更新时间:2023-12-02 19:25:17 27 4
gpt4 key购买 nike

是否可以将用户定义的聚合(clr)与窗口函数(over)一起使用?

在文档中找不到答案:http://technet.microsoft.com/en-us/library/ms190678.aspx

最佳答案

你说得对,在文档中找到任何东西都很棘手。但是搜索 Connect 网站,我设法找到了这个 gem :

Today, you can use CLR aggregates with OVER clause and PARTITION BY just like regular aggregate functions. Once we have support for window functions...

这是 Microsoft 的回应。

<小时/>

但是,当我等待我的旧机器创建新的数据库项目并创建此聚合时,我在 Connect 站点上进行了搜索:

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

这是一个很长的说法 - 您只需尝试就可以轻松找到答案。

关于sql-server - 是否可以将用户定义的聚合(clr)与窗口函数(over)一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22352026/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com