Je suis en train d'écrire ce qui suit afin d'obtenir un total de fonctionnement de numUsers distincts, comme suit:Partition Fonction COUNT() OVER possible en utilisant DISTINCT
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
studio de gestion ne semble pas trop heureux ce. L'erreur disparaît lorsque je supprime le mot clé DISTINCT
, mais ce n'est pas un nombre distinct.
DISTINCT
ne semble pas être possible dans les fonctions de partition. Comment puis-je trouver le nombre distinct? Dois-je utiliser une méthode plus traditionnelle comme une sous-requête corrélée? En regardant un peu plus loin, peut-être que ces fonctions OVER
fonctionnent différemment d'Oracle de telle sorte qu'elles ne peuvent pas être utilisées dans SQL-Server
pour calculer les totaux cumulés.
J'ai ajouté un exemple en direct ici sur SQLfiddle où j'essaie d'utiliser une fonction de partition pour calculer un total cumulé.
'' COUNT' avec ORDER BY' au lieu de 'PARTITION BY' est mal défini en 2008. Je suis surpris que cela vous laisse avoir du tout. Selon la [documentation] (http://msdn.microsoft.com/en-us/library/ms189461 (v = sql.105) .aspx), vous n'êtes pas autorisé un 'ORDER BY' pour une fonction d'agrégation. –
yep - pense que je suis confus avec certaines fonctionnalités d'Oracle; ces totaux cumulés et les décomptes en cours seront un peu plus impliqués – whytheq
Voter pour ceci -> https://connect.microsoft.com/SQLServer/feedback/details/254393/over-clause-enhancement-request-distinct-clause-for- fonctions agrégées Itzik Ben-Gan a soulevé ce chemin en 2007. Toujours pas arrivé – Davos