Я пытаюсь написать следующее, чтобы получить текущую сумму различных NumUsers, например, так:Partition Функция COUNT() OVER можно с помощью DISTINCT
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
студии управления, кажется, не слишком доволен это. Ошибка исчезает, когда я удаляю ключевое слово DISTINCT
, но тогда это не будет отчетливым.
DISTINCT
не представляется возможным в рамках функций разбиения. Как мне найти отчетный счет? Использую ли я более метод, такой как коррелированный подзапрос?
Заглянув в это немного дальше, возможно, эти функции OVER
работают по-разному с Oracle, так как они не могут использоваться в SQL-Server
для расчета текущих итогов.
Я добавил живой пример здесь на SQLfiddle, где я пытаюсь использовать функцию перегородки для вычисления общей суммы.
'' COUNT' с ORDER BY' вместо «PARTITION BY» в 2008 году не определен. Я удивлен, что это позволяет вам иметь его вообще. В соответствии с [документацией] (http://msdn.microsoft.com/en-us/library/ms189461 (v = sql.105) .aspx) вам не разрешено «ЗАКАЗАТЬ» для агрегатной функции. –
yep - думаю, что меня путают с некоторыми функциями оракула; эти текущие итоги и подсчеты будут немного больше задействованы – whytheq
Проголосуйте за это -> https://connect.microsoft.com/SQLServer/feedback/details/254393/over-clause-enhancement-request-distinct-clause-for- совокупные функции Itzik Ben-Gan подняли этот путь еще в 2007 году. Еще не произошло – Davos