Estoy intentando escribir la siguiente con el fin de obtener un total acumulado de numUsers distintas, así:partición función count() OVER posible usando DISTINCT
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
Management Studio no parece muy feliz por esta. El error desaparece cuando elimino la palabra clave DISTINCT
, pero luego no será un conteo distinto.
DISTINCT
no parece 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?
Al analizar esto un poco más, tal vez estas funciones OVER
funcionen de forma diferente a Oracle en la forma en que no se pueden usar en SQL-Server
para calcular los totales acumulados.
He agregado un ejemplo en vivo aquí en SQLfiddle donde intento utilizar una función de partición para calcular un total acumulado.
'' COUNT' con ORDEN BY' en lugar de 'PARTITION BY' está mal definido en 2008. Me sorprende que te permita tenerlo. Según la [documentación] (http://msdn.microsoft.com/en-us/library/ms189461 (v = sql.105) .aspx), no tiene permitido un 'ORDER BY' para una función agregada. –
sí, creo que me confunden algunas funciones de Oracle; estos totales acumulados y recuentos en ejecución serán un poco más complicados. – whytheq
Vote por esto -> https://connect.microsoft.com/SQLServer/feedback/details/254393/over-clause-enhancement-request-distinct-clause-for- funciones agregadas Itzik Ben-Gan se remontó en 2007. No ha sucedido – Davos