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 DISTINCT
słowa kluczowego, ale wtedy nie będzie to wyraźna liczba.
DISTINCT
nie 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 OVER
funkcje działają inaczej niż Oracle, ponieważ nie można ich używać SQL-Server
do 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.
COUNT
zORDER BY
zamiastPARTITION BY
jest źle zdefiniowana w 2008 roku. Dziwię się, że w ogóle pozwala ci to mieć. Zgodnie z dokumentacją nie możeszORDER BY
korzystać z funkcji agregującej.