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