Ich versuche, den folgend zu schreiben, um eine laufende Summe verschiedenen NumUsers zu bekommen, etwa so:Partition Funktion COUNT() OVER möglich mit DISTINCT
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
Management Studio scheint nicht allzu glücklich über Dies. Der Fehler verschwindet, wenn ich das Schlüsselwort DISTINCT
entferne, aber dann wird es keine eindeutige Anzahl sein.
DISTINCT
scheint nicht innerhalb der Partition Funktionen möglich sein. Wie gehe ich vor, um die eindeutige Anzahl zu finden? Verwenden Sie eine mehr traditionelle Methode wie eine korrelierte Unterabfrage?
Blick in diese etwas weiter, vielleicht diese OVER
Funktionen arbeiten anders als Oracle in der Art, dass sie nicht in SQL-Server
verwendet werden können, um laufende Summen zu berechnen.
Ich habe ein Live-Beispiel hier auf SQLfiddle hinzugefügt, wo ich versuche, eine Partitionsfunktion zu verwenden, um eine laufende Summe zu berechnen.
' COUNT' BY' statt 'PARTITION BY' ist 2008 nicht definiert. Ich bin überrascht, dass Sie es überhaupt haben. Nach der [Dokumentation] (http://msdn.microsoft.com/en-us/library/ms189461 (v = sql.105) .aspx) ist es Ihnen nicht erlaubt, eine ORDER BY für eine Aggregatfunktion. –
yep - denke ich bin verwirrt mit etwas Orakel Funktionalität; Diese laufenden Summen und laufenden Zahlen werden ein wenig mehr beteiligt – whytheq
Vote für diese -> https://connect.microsoft.com/SQLServer/feedback/details/254393/over-clause-enhancement-request-distinct-klause-for- Aggregat-Funktionen Itzik Ben-Gan hob diesen Weg zurück im Jahr 2007. Noch ist nicht passiert – Davos