解决方法
sql Server 2000不正式支持自定义聚合函数.然而,我最近也需要这个功能,我发现这篇文章有启发性:
http://weblogs.sqlteam.com/jeffs/articles/1490.aspx
http://weblogs.sqlteam.com/jeffs/articles/1490.aspx
但这有点黑客:它需要访问sp_OA___扩展过程.
总结是您可以使用一系列四个包装函数来模拟聚合函数,每个函数执行以下任务之一:
>创建可以在查询中保持状态的ActiveX对象.在运行查询之前调用它.
>使用ActiveX对象进行实际聚合.
>清除GROUP BY边界上的ActiveX对象状态
破坏对象在运行查询和错误处理之后调用它.
然后,您可以在查询的选择列表中包含项目2和3,并且项目2也必须包含在现有的无效果聚合函数(如MAX()或MIN())中.您还可以使用此技术来执行累积函数,例如行号.
一些评论表明,优化器可能尝试通过优化在某些情况下的呼叫来否定聚合效应,尽管我预计这将是非常罕见的情况.但是,我发现这个问题是因为我把这些警告认真地用于继续搜索更好的东西.