2008-09-04 61 views
12

如何在MS SQL Server中創建自定義聚合函數?一個例子會有很大的幫助。MS SQL Server中的自定義聚合函數?

+0

此[示例](http://msdn.microsoft.com/en-us/library/ms182741.aspx)和[this](http://msdn.microsoft.com/en-us/library/ms131056 .aspx)應該讓你去。 – vzczc 2008-09-04 15:04:00

回答

1

SQL Server 2000不正式支持自定義聚合函數。然而,最近我需要的功能,以及,我發現這篇文章啓發:
http://weblogs.sqlteam.com/jeffs/articles/1490.aspx

這是一個有點劈十歲上下,雖然:它需要訪問sp_OA___擴展程序。

的細節上,你可以模擬聚合函數了四大系列的包裝功能,每一個執行以下任務之一:

  1. 創建ActiveX對象,它可以在保持狀態查詢。在運行查詢之前調用此
    • 使用ActiveX對象進行實際聚合。
    • 清除GROUP BY邊界上的ActiveX對象狀態
    • 銷燬對象。在運行查詢並在錯誤處理期間調用此

然後,您可以包括項目2 3在選擇列表中的查詢,第2項也必須被包裹在一個現有的無效應聚集函數像MAX()或MIN()。你也可以使用這種技術進行累積函數來完成像行號這樣的事情。

一些評論表明,優化器可能會嘗試通過優化掉某些情況下的調用來消除聚合效應,但我認爲這確實是非常罕見的情況。但是,我發現這個問題是因爲我認真對待這些警告,以便繼續尋找更好的東西。