2008-09-04 14 views

Respuesta

1

SQL Server 2000 no admite oficialmente funciones de agregado personalizadas. Sin embargo, hace poco que necesitaba funcionalidad, así, y me encontré con este artículo esclarecedor:
http://weblogs.sqlteam.com/jeffs/articles/1490.aspx

Es un poco hack-ish, sin embargo: se requiere el acceso a los sp_OA___ procedimientos prolongados.

El resumen es que se puede simular de una función de agregado con una serie de cuatro funciones de contenedor, cada uno de los cuales realiza una de las siguientes tareas:

  1. Crear un objeto ActiveX que puede contener Estado dentro del consulta. Llame a este antes de ejecutando la consulta.
    • Realice la agregación real utilizando el objeto ActiveX.
    • Borre el estado del objeto ActiveX en los límites de GROUP BY
    • Destruya el objeto. Llame a este después de ejecutando la consulta y durante el manejo de errores.

A continuación, se incluyen artículos 2 y 3 en la lista de selección para su búsqueda, y el artículo 2 también debe ser envuelto en una función de agregado de efecto no existente como MAX() o MIN(). También puede usar esta técnica para funciones acumulativas para hacer cosas como números de fila.

Algunos de los comentarios sugieren que el optimizador puede intentar anular los efectos de agregación optimizando las llamadas en algunas circunstancias, aunque supongo que sería un caso muy raro. Sin embargo, encontré esta pregunta porque tomé esas advertencias lo suficientemente en serio como para seguir buscando algo mejor.

Cuestiones relacionadas