Bonjour,
Je souhaite créer une requete permettant de grouper par les 6 premier chiffre d'un code qui en comporte 8.
Merci d'avance
Vplf
Bonjour,
Je souhaite créer une requete permettant de grouper par les 6 premier chiffre d'un code qui en comporte 8.
Merci d'avance
Vplf
Et pour quoi pas code avec les 8 chiffres et tu les ordonne par ordre croissant.
Salut,
rien ne t'empeche de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT tes_cols FROM ta_table WHERE conditions GROUP BY substr(ton_code,1,6)
Je n'ai pas bien compris ta solution. (peut etre que je ne suis pas claire)Envoyé par Shaud7
Par exemple: le code principal est la classe des eleves d'un college et le sous-code est la section (exemple avec 4 chiffres)
0503->cet eleve est en cinquieme 3.
Est je voudrais compter le nombre d'eleve par section.
resultat:
x eleves en 6eme
y eleves en 5eme
w eleves en 4eme
z eleves en 3eme
vplf
nantais, la fonction substr() permet de faire quoi au juste?Envoyé par nantais
Merci
Cette fonction permet d'extraire une sous chaine de ta chaine ici 6 caracteres en commencant au premier.Envoyé par Shaud7
C'est bein ce qui est indiqué dans le tutoriel mais ce ne fonctionne que sous Oracle et je suis sous access
vplf
La c'est plus claire, et je comprend pourquoi.Envoyé par vplf
moui moui mouimais je ne vois pas du tout commetn faire
vplf
Va voir cette page, peut etre trouvera tu ton bonheur
http://dev.mysql.com/doc/mysql/fr/BLOB.html
OK alors sous Access tu peux utiliser à la place de SUBSTR la fonction LEFT (ta_var,6) qui te donne les 6 premiers caractères de ta variable.
Sinon, l'idée générale reste la même
Pour reprendre ta demande en particulier, tu peux faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT LEFT(code,2), count(*) FROM ta_table GROUP BY LEFT(coce,2)
Left marche avec une variable ca d'accord mais pas avec un nom de champ il me semble.Envoyé par nantais
Je ne peux pas faire SQL=SQL & "LEFT(nom_du_champ_de_la_table,6)"
vplf
Alors d'apres vous ca marche meme si c'est dans la chaine SQL!!!!
c'est louche : chez moi ca en marche pas......
![]()
vplf
Pour aller plus vite, donne nous le shéma de ta table et ce que tu souhaites obtenir exactement
a partir de mon exemple (car ma requete est beaucoup trop compliquee->ca va vous deseperer et vous faire fuireEnvoyé par nantais
)
code-----nb eleves
0601------10
0602------15
0603------12
0501------11
0502------12
0503------10
Je voudrais grouper sur les deux premiers chiffres du code
resultat souhaité:
06-----37
05-----33
Est ce que ca vous parait plus clair?
Merci beaucoup
vplf
OK alors cette requete fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT LEFT(code,2), sum(nb_eleves) FROM ta_table GROUP BY LEFT(code,2)
Nb eleves et Code sont dans la meme table?
Merci beaucoup.
Dans l'exemple oui c'est dans la meme table mais ma vraie requete est une requete croisée créée dynamiquement avec une vingtaine de conditions (elle est la base d'un graphique access)![]()
vplf
Ca ne vous parait pas louche comme code?
vplf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 TRANSFORM COUNT(*) as total SELECT Left$(UO_CODE, 6) FROM UO U, AGENT A, ENTRETIEN E WHERE U.UO_CODE = A.UO_CODE AND A.AGT_NNI = E.AGT_NNI AND ENT_DATE>AGT_DATE_EMPL AND ( A.UO_CODE LIKE '019510??' OR A.UO_CODE LIKE '019515??' ) AND ( AGT_SEXE = '1' OR AGT_SEXE = '2' ) GROUP BY Left$(U.UO_CODE, 6) A.AGT_SEXE PIVOT AGT_SEXE
C'est bon j'ai trouvé une autre solution.
Beaucoup plus compliquée mais qui marche.
Merci beaucoup de votre patience.
vplf
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager