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

时间:2008-09-04 15:01:45

标签: sql-server database

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

1 个答案:

答案 0 :(得分:1)

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

但这有点像黑客攻击:它需要访问sp_OA___扩展程序。

摘要是,您可以使用一系列四个包装函数模拟聚合函数,每个函数执行以下任务之一:

  1. 创建一个可以在查询中保存状态的ActiveX对象。在运行查询之前调用此
    • 使用ActiveX对象进行实际聚合。
    • 清除GROUP BY boundries上的ActiveX对象状态
    • 销毁对象。 运行查询后和错误处理期间调用此
  2. 然后在查询的选择列表中包含项目2 3,项目2也必须包含在现有的无效聚合函数中,如MAX()或MIN()。您还可以使用此技术将累积函数用于执行行号等操作。

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