Wie kann ich eine benutzerdefinierte Aggregatfunktion in MS SQL Server erstellen? Ein Beispiel würde viel helfen.Benutzerdefinierte Aggregatfunktionen in MS SQL Server?
Antwort
SQL Server 2000 unterstützt benutzerdefinierte Aggregatfunktionen nicht offiziell. Allerdings musste ich vor kurzem, dass die Funktionalität als auch, und ich habe diesen Artikel erhellend:
http://weblogs.sqlteam.com/jeffs/articles/1490.aspx
Es ist ein bisschen hack-ish, aber: es erfordert den Zugriff auf die sp_OA___
erweiterten Verfahren.
Die Zusammenfassung ist, dass man eine Aggregatfunktion mit einer Serie von vier Wrapper-Funktionen simulieren, von denen jede eine der folgenden Aufgaben:
- Erstellen Sie ein ActiveX-Objekt, das Zustand innerhalb der halten kann Abfrage. Rufen Sie diese vor die Abfrage ausführen.
- Führen Sie die tatsächliche Aggregation mithilfe des ActiveX-Objekts durch.
- Löschen Sie den ActiveX-Objektstatus auf GROUP BY-Grenzen
- Zerstören Sie das Objekt. Rufen Sie diese nach die Abfrage und während der Fehlerbehandlung ausführen.
Sie sind dann Artikel 2 und 3 in der Auswahlliste für Ihre Anfrage, und Punkt 2 muss auch in einer bestehenden No-Effect-Aggregatfunktion wie MAX() oder MIN() gewickelt werden. Sie können diese Technik auch für kumulative Funktionen verwenden, um z. B. Zeilennummern zu verwenden.
Einige der Kommentare legen nahe, dass der Optimierer versuchen könnte, die Aggregationseffekte zu negieren, indem er die Aufrufe unter bestimmten Umständen wegoptimiert, obwohl ich erwarte, dass dies ein sehr seltener Fall wäre. Ich habe diese Frage jedoch gefunden, weil ich diese Warnungen ernst genug genommen habe, um weiter nach etwas Besserem zu suchen.
- 1. Android zu MS SQL Server
- 2. MS SQL Server Quer Tabellenconstraint
- 3. PostgreSQL oder MS SQL Server?
- 4. Factoring SQL-Code - MS SQL Server
- 5. SQL-Abfrage, Wildcard, MS SQL Server 2005
- 6. Benutzerdefinierte Datentypoperatoren in Sql Server?
- 7. benutzerdefinierte Sortierung in SQL Server
- 8. Synonyme in MS SQL bearbeiten Server 2005
- 9. Sonderzeicheneinfügung in MS SQL Server 2008
- 10. Problem mit Trigger in ms SQL Server?
- 11. Fehler in if-Bedingung - MS SQL-Server
- 12. Server-Seite Paginierung in Azure (MS SQL)
- 13. SQL Server: benutzerdefinierte Funktionsparameter
- 14. SQL Aggregatfunktionen und Gruppieren nach
- 15. Verwenden Sie benutzerdefinierte Aggregatfunktionen im Paket
- 16. SQL-Problem mit Aggregatfunktionen in Where-Klausel
- 17. Datumsformatierung in MS SQL
- 18. MS SQL Server zuletzt eingefügte ID
- 19. Ms Access - Echtzeitaktualisierungen mit SQL Server
- 20. Spring + Hibernate + MS SQL Server - UTC-Zeitzone
- 21. MS SQL Server NTEXT zu INT
- 22. MS SQL Server dezimalen Datentyp rundet
- 23. MS SQL Server Casting ohne Ausnahme
- 24. Verbindung zu lokalen MS SQL Server
- 25. Benutzerdefinierte Sortierfunktion - von SQL Server
- 26. Index varchar auf MS SQL Server 2005
- 27. MS SQL Server - konvertieren HEX String
- 28. MS SQL Server Zeile GUID Spalte
- 29. MS Sql Server 2000: Mehrere Datenbankabfrage
- 30. Hibernate- und MS SQL Server-Identitätsspalte
Dies [Beispiel] (http://msdn.microsoft.com/en-us/library/ms182741.aspx) und [dies] (http://msdn.microsoft.com/en-us/library/ms131056 .aspx) sollte dich in Gang bringen. – vzczc