Я пытаюсь написать следующее, чтобы получить общее количество различных NumUsers, например:
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
Студия менеджмента, похоже, не слишком довольна этим. Ошибка исчезает, когда я удаляю DISTINCTключевое слово, но тогда это не будет отдельного подсчета.
DISTINCTне представляется возможным в рамках функций секционирования. Как мне найти точное количество? Могу ли я использовать более традиционный метод, такой как коррелированный подзапрос?
Если посмотреть на это немного подробнее, возможно, эти OVERфункции работают иначе, чем Oracle, в том смысле, что их нельзя использовать SQL-Serverдля расчета промежуточных итогов.
Я добавил живой пример здесь, в SQLfiddle, где я пытаюсь использовать функцию секционирования для вычисления промежуточной суммы.
COUNTwithORDER BYвместоPARTITION BYis нечетко определено в 2008 году. Я удивлен, что он вообще позволяет вам его иметь. Согласно документации , вам не разрешеноORDER BYиспользовать агрегатную функцию.