Estoy tratando de escribir lo siguiente para obtener un total acumulado de NumUsers distintos, así:
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
Management Studio no parece muy feliz con esto. El error desaparece cuando elimino la DISTINCT
palabra clave, pero luego no será un recuento distinto.
DISTINCT
no parece ser posible dentro de las funciones de partición. ¿Cómo hago para encontrar el recuento distinto? ¿Utilizo un método más tradicional , como una subconsulta correlacionada?
Analizando esto un poco más, tal vez estas OVER
funciones funcionen de manera diferente a Oracle en la forma en que no se pueden usar SQL-Server
para calcular los totales acumulados.
Agregué un ejemplo en vivo aquí en SQLfiddle donde intento usar una función de partición para calcular un total acumulado .
COUNT
con enORDER BY
lugar dePARTITION BY
está mal definido en 2008. Me sorprende que te permita tenerlo. Según la documentación , no se le permite unaORDER BY
función agregada.