2012-11-21 3 views
0

J'ai cette table en accès et j'essaye de faire un compte et un groupe par mais j'obtiens une erreur.Grouper par et compter dans l'accès

enter image description here

Ce que je suis en train de faire est un groupe par la source le nombre de voitures qui ont AC et sont fabriqués avant 2008.

J'ai essayé ceci:

SELECT SOURCE_ID, COUNT (SOURCE_ID) AS VEHICLES_WITH_AC 
FROM VEHICLE 
WHERE VEH_AC = 'Y' 
GROUP BY SOURCE_ID, VEH_AC, VEH_YEAR 
HAVING VEH_YEAR <'2008'; 

Mais Obtenir: enter image description here

Répondre

1
SELECT SOURCE_ID, COUNT (*) AS VEHICLES_WITH_AC 
FROM VEHICLE 
WHERE VEH_AC = 'Y' AND VEH_YEAR < '2008' 
GROUP BY SOURCE_ID; 

1) Vous requerraient totaux par source_id et rien d'autre, de sorte que vous ne pas regrouper par quoi que ce soit d'autre.

2) votre condition sur VEH_YEAR devrait aller dans la clause where sinon toutes les lignes veh_year seront sélectionnées et jetées après l'agrégation.

+0

oui, cela semble être la réponse la plus simple au lieu d'avoir à forcer une clause having là-dedans. Merci. D'un côté, je me demandais comment je pourrais commander par VEHICLES_WITH_AC? Je ne sais pas quoi appeler cette colonne temporaire alors google une solution me donne des problèmes. Par exemple, j'ai une requête qui montre les employés avec le moins de ventes, mais je veux que le résultat descende. – Batman

+1

@ Batman. Vous pouvez utiliser les numéros ordinaux des colonnes pour trier: ORDER BY 2 DESC triera par la deuxième colonne dans l'ordre décroissant. –

1

Essayez de supprimer le ; après la clause WHERE. reference

+0

Merci, j'ai attrapé cela un peu plus tôt, mais cela ne résout pas le problème cependant. – Batman

+0

Peut-être remplacer la capture d'écran? –

+0

J'ai ajouté un nouveau montrant ce que j'essaie et ce que j'obtiens. Le SOURCE_ID doit-il être distinct quand je dis group par source_id. Cependant, son apparition deux fois (102) – Batman