Próbuję napisać co następuje, aby uzyskać bieżącą liczbę różnych NumUserów, na przykład:
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
Studio zarządzania nie wydaje się z tego powodu zbytnio zadowolone. Błąd znika po usunięciu DISTINCTsłowa kluczowego, ale wtedy nie będzie to wyraźna liczba.
DISTINCTnie wydaje się być możliwe w ramach funkcji partycji. Jak mam znaleźć odrębną liczbę? Czy używam bardziej tradycyjnej metody, takiej jak skorelowane podzapytanie?
Patrząc nieco dalej, być może te OVERfunkcje działają inaczej niż Oracle, ponieważ nie można ich używać SQL-Serverdo obliczania sum bieżących.
Dodałem tutaj przykład na żywo w SQLfiddle, w którym próbuję użyć funkcji partycji do obliczenia bieżącej sumy.
COUNTzORDER BYzamiastPARTITION BYjest źle zdefiniowana w 2008 roku. Dziwię się, że w ogóle pozwala ci to mieć. Zgodnie z dokumentacją nie możeszORDER BYkorzystać z funkcji agregującej.