Count Distinct dans un Groupe En fonction d'agrégation SQL dans Access 2007
Bonjour, j'ai parcouru le forum depuis un moment et je demande à ma première question ici. Je suis un peu dans une impasse et je me demandais si je pouvais obtenir de l'aide. Je suis à l'aide de Access 2007 et n'ont pas trouvé une bonne réponse à la question sur le Net encore.
Mes données sont des Codes de Diagnostic et CustomerID et ce que je suis à la recherche d'un pourquoi pour trouver le nombre distinct de code client pour chaque Code de Diagnostic. Idéalement dans le non-Accès SQL, il devrait ressembler à ceci:
SELECT DiagCode, Count(Distinct(CustomerID))
FROM CustomerTable
Group By DiagCode;
Je sais que c'est une simple question, mais les réponses que je trouve sont soit trop compliqué(plusieurs fonctions d'agrégation) ou trop simple. Ici, c'est une approche que j'ai fait pour le résoudre, mais cela donne trop de résultats:
SELECT DiagCode, Count(CustomerID)
FROM CustomerTable
WHERE CustomerID in (SELECT Distinct CustomerID from CustomerTable)
Group By DiagCode;
Espère que je suis clair ici, comme je l'ai dit mon premier post, et toute aide est appréciée.
OriginalL'auteur Thescanswer | 2013-08-01
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas expert dans MS Access et il est un temps assez long la dernière fois que j'ai écrit quelque chose pour elle, mais ce peut-être:
OriginalL'auteur gzaxx
J'ai eu la même question et a trouvé un lien (aujourd'hui disparu) par l'Équipe d'Accès à Microsoft d'avoir un très bon exemple de la façon de le réaliser; que je vais aussi inclure ici ci-dessous.
De données:
D'obtenir un décompte du nombre de couleurs uniques dans le tableau, vous pouvez écrire une requête telle que:
Ce serait de retour la valeur 4 comme il y a quatre couleurs uniques dans le champ de la Couleur dans le tableau. Malheureusement, l'Accès au Moteur de Base de données ne prend pas en charge le Count(Distinct) de l'agrégat. Pour revenir à cette valeur à partir d'une table Access, vous devez utiliser une sous-requête comme:
Maintenant, disons que vous voulez également inclure une autre valeur globale comme une Somme, et souhaitez les regrouper en a de la valeur, dans ce cas, la Couleur. Sur SQL Server, vous pouvez écrire cette requête comme:
Cela donne les résultats suivants:
De données:
Maintenant, si vous vous demandez si oui ou non il doit retourner la valeur de "1", la réponse est oui. Si je comprends bien, le Count(Distinct) ici peut être utilisé comme un test pour vérifier les résultats d'une requête donnée.
Si vos données sont sur un serveur qui prend en charge Count(Distinct), vous pourriez être en mesure d'utiliser un passe-requête pour récupérer les résultats. Si vous travaillez avec des données d'Accès, cela devient un peu plus difficile.
Puisque nous avons utilisé des sous-requêtes pour la requête précédente, nous allons avoir besoin de faire la même chose ici. Le truc, cependant, est que nous devons utiliser deux sous-requêtes, comme indiqué dans le code SQL suivant:
OriginalL'auteur Curtis Inderwiesche
Cela fonctionne dans Access 2007 et 2010:
OriginalL'auteur Steve Graessle