2010-02-12 5 views
2

J'ai un ensemble de données qui ressemble à ceci:MSAccess: lignes Classement basé sur des critères de colonne

Account Cost Centre TransNo 
aaa  111   43443 
aaa  111   32112 
aaa  111   43211 
aaa  112   32232 
aaa  113   56544 
bbb  222   43222 
bbb  222   98332 
ccc  111   88778 

je besoin d'une colonne supplémentaire qui est compteur du nombre de lignes qui se rapportent à ce compte/Coût combinaison Centre :

Account Cost Centre TransNo rCounter 
aaa  111   43443  1 
aaa  111   32112  2 
aaa  111   43211  3 
aaa  112   32232  1 
aaa  112   56544  2 
bbb  222   43222  1 
bbb  222   98332  2 
ccc  111   88778  1 

Est-ce possible de faire dans MSAccess en utilisant SQL? et comment j'y arriverais (c'est-à-dire quel serait le script SQL que j'aurais besoin d'écrire)?

Merci d'avance.

+0

Avez-vous besoin d'ajouter la colonne pour stocker une valeur générée, ou peut vous calculer à la volée? Ressemble à un compteur en regroupant Cost_Center, pas trop difficile à calculer à la volée. – glasnt

+0

"Comment je m'y prendrais?" - en écrivant une requête. –

+0

J'ai juste besoin de le calculer à la volée. Dans le jeu de données réel, il y aura aussi d'autres colonnes (Année/mois) à compter, mais j'imagine que la logique sera la même. – Withnail

Répondre

1

Quelque chose comme:

SELECT a.Account, a.[Cost Centre], a.TransNo, (SELECT Count(*) 
    FROM table4 b 
    WHERE b.Account=a.Account 
    AND b.[Cost Centre]=a.[Cost Centre] 
    AND b.TransNo<=a.TransNo) AS AccountNo 
FROM Table4 AS a 
ORDER BY a.Account, a.[Cost Centre], a.TransNo; 
+0

Doux! Le seul problème que je peux voir est que cela va être lent pour les grands ensembles de données. Je l'ai couru sur une table avec 131K disques et c'était assez horrible. Restreindre à l'une des deux premières colonnes est probablement le seul moyen de le rendre utilisable. –

+0

Génial! Fonctionne un régal. Merci un million de Remou – Withnail

Questions connexes