sql-server - MS SQL Server 中的自定义聚合函数?

标签 sql-server database

如何在 MS SQL Server 中创建自定义聚合函数?一个例子会有很大帮助。

最佳答案

SQL Server 2000 不正式支持自定义聚合函数。但是,我最近也需要该功能,我发现这篇文章很有启发性:
http://weblogs.sqlteam.com/jeffs/articles/1490.aspx

虽然它有点 hack-ish:它需要访问 sp_OA___ 扩展过程。

总结是您可以模拟具有一系列四个包装函数的聚合函数,每个包装函数执行以下任务之一:

  1. 创建一个可以在查询中保存状态的 ActiveX 对象。 运行查询之前调用它。
    • 使用 ActiveX 对象进行实际聚合。
    • 清除 GROUP BY 边界上的 ActiveX 对象状态
    • 销毁物体。 运行查询之后和错误处理期间调用此函数。

然后您在查询的选择列表中包含项目 2 3,并且项目 2 还必须包含在现有的无效果聚合函数中,例如 MAX() 或 MIN()。您还可以将此技术用于累积函数来执行诸如行号之类的操作。

一些评论表明优化器可能会在某些情况下尝试通过优化调用来抵消聚合效应,但我预计这确实是一种非常罕见的情况。但是,我发现了这个问题,因为我认真对待这些警告以继续寻找更好的东西。

关于sql-server - MS SQL Server 中的自定义聚合函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43940/

相关文章:

MySql Union 立即合并到父表 ID

mysql - 有没有更好的方法来确定书店数据库中最受信任的用户?

MYSQL|状态的数据类型

mysql - 改进 MySQL 查询

php - 访问数组 PHP 中的一行

sql - CHECKPOINT 的工作方式与 SQL 中的 COMMIT 相同吗?

sql-server - SQL Server 更新行,如 '%#186;%'

sql-server - 如何删除系统拥有的localdb实例

c# - 使用 LINQ to Entities 进行自然排序

c# - 数据库图像字段传递空值