Estou tentando escrever o seguinte para obter um total em execução de NumUsers distintos, como:
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
O estúdio de gerenciamento não parece muito feliz com isso. O erro desaparece quando eu removo a DISTINCT
palavra - chave, mas não será uma contagem distinta.
DISTINCT
não parece ser possível dentro das funções de partição. Como faço para encontrar a contagem distinta? Devo usar um método mais tradicional , como uma subconsulta correlacionada?
Analisando um pouco mais a fundo, talvez essas OVER
funções funcionem de maneira diferente do Oracle, de modo que não podem ser usadas SQL-Server
para calcular totais corridos.
Eu adicionei um exemplo ao vivo aqui no SQLfiddle onde tento usar uma função de partição para calcular um total em execução.
COUNT
com emORDER BY
vez dePARTITION BY
está mal definido em 2008. Estou surpreso que esteja permitindo que você tenha. Pela documentação , você não tem permissãoORDER BY
para uma função agregada.