Ich versuche Folgendes zu schreiben, um eine laufende Summe unterschiedlicher NumUsers zu erhalten:
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
Das Management Studio scheint darüber nicht allzu glücklich zu sein. Der Fehler verschwindet, wenn ich das DISTINCT
Schlüsselwort entferne , aber dann wird es nicht eindeutig gezählt.
DISTINCT
scheint innerhalb der Partitionsfunktionen nicht möglich zu sein. Wie finde ich die eindeutige Anzahl? Benutze ich eine traditionellere Methode wie eine korrelierte Unterabfrage?
Wenn Sie dies etwas OVER
genauer untersuchen, funktionieren diese Funktionen möglicherweise anders als Oracle, da sie nicht SQL-Server
zur Berechnung der laufenden Summen verwendet werden können.
Ich habe hier auf SQLfiddle ein Live-Beispiel hinzugefügt, in dem ich versuche, mithilfe einer Partitionsfunktion eine laufende Summe zu berechnen.
COUNT
mitORDER BY
stattPARTITION BY
schlecht definiert ist , im Jahr 2008. Ich bin überrascht , es ist so dass Sie es überhaupt haben. Gemäß der Dokumentation ist es Ihnen nicht gestattet,ORDER BY
eine Aggregatfunktion zu verwenden.