IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Tri des mois dans l'ordre alphabétique et non chronologique


Sujet :

Requêtes et SQL.

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut Tri des mois dans l'ordre alphabétique et non chronologique
    Bonjour

    J'ai un problème avec la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Format([Date signature définitive],"mmmm") AS MOIS, Count(AFFAIRES.Réfaffaires) AS Nombre, Count(AFFAIRES.Réfaffaires)/(SELECT Count(AFFAIRES.Réfaffaires) AS CompteDeRéfaffaires
    FROM AFFAIRES WHERE (((AFFAIRES.[Date signature définitive]) Between Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 And Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))) AS Part, Sum(AFFAIRES.[Montant honoraires HT]) AS CA, Sum(AFFAIRES.[Montant honoraires HT]) /(SELECT Sum(AFFAIRES.[Montant honoraires HT]) AS CA FROM AFFAIRES WHERE (((AFFAIRES.[Date signature définitive]) Between Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 And Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))) AS [%]
    FROM AFFAIRES
    WHERE (((AFFAIRES.[Date signature définitive]) Between Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 And Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))
    GROUP BY Format([Date signature définitive],"mmmm"), Month([Date signature définitive]);
    Je n'ai pas les mois dans l'ordre normal mais en ordre alphabétique .
    Avez-vous une idée ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    C'est normal, il faut que tu crées un autre champ dans ta requête qui récupère le mois en chiffres (DatePart par exemple), et de faire le tri sur ce champ.

    Starec

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Qui récupère le mois en chiffres ?!
    Et on récupère comment un mois en chiffres ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    un coup de sur la fonction DatePart.

    Starec

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Ok
    Bah moi j'ai rajouté ça à la fin juste avant FROM AFFAIRES
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DatePart("mm",[Date signature définitive])
    et, bah ça marche pas

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re

    Remets la requête avec les modifs.

    Starec

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Format([Date signature définitive],"mmmm") AS MOIS, Count(AFFAIRES.Réfaffaires) AS Nombre, Count(AFFAIRES.Réfaffaires)/(SELECT Count(AFFAIRES.Réfaffaires) AS CompteDeRéfaffaires
    FROM AFFAIRES WHERE (((AFFAIRES.[Date signature définitive]) Between Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 And Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))) AS Part, Sum(AFFAIRES.[Montant honoraires HT]) AS CA, Sum(AFFAIRES.[Montant honoraires HT]) /(SELECT Sum(AFFAIRES.[Montant honoraires HT]) AS CA FROM AFFAIRES WHERE (((AFFAIRES.[Date signature définitive]) Between Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 And Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))) AS [%], DatePart("mm",[Date signature définitive])
    FROM AFFAIRES
    WHERE (((AFFAIRES.[Date signature définitive]) Between Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 And Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))
    GROUP BY Format([Date signature définitive],"mmmm"), Month([Date signature définitive]);

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re

    Les balises codes

    Ajoutes un alias à la fin de ton datepart

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DatePart("mm",[Date signature définitive]) As lngMois
    et fais l'Order BY
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORDER BY DatePart("mm",[Date signature définitive])
    pour voir

    Starec

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    désolée mais quand j'ai fait le # sur mon code
    alors je ne comprends pas

  10. #10
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Voilà ce que ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT Format([Date signature définitive],"mmmm") AS MOIS, Count(AFFAIRES.Réfaffaires) AS Nombre, Count(AFFAIRES.Réfaffaires)/(SELECT Count(AFFAIRES.Réfaffaires) AS CompteDeRéfaffaires
    FROM AFFAIRES WHERE (((AFFAIRES.[Date signature définitive]) Between Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 And Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))) AS Part, Sum(AFFAIRES.[Montant honoraires HT]) AS CA, Sum(AFFAIRES.[Montant honoraires HT]) /(SELECT Sum(AFFAIRES.[Montant honoraires HT]) AS CA FROM AFFAIRES WHERE (((AFFAIRES.[Date signature définitive]) Between Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 And Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))) AS [%], DatePart("mm",[Date signature définitive]) AS lngmois
    FROM AFFAIRES
    WHERE (((AFFAIRES.[Date signature définitive]) Between Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 And Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))
    GROUP BY Format([Date signature définitive],"mmmm"), Month([Date signature définitive]), AFFAIRES.[Transaction aboutie]
    HAVING (((AFFAIRES.[Transaction aboutie])=True))
    ORDER BY DatePart("mm",[Date signature définitive]);
    et ça ne fonctionne pas. (vous avez essayé d'exécuter une fonction....)

  11. #11
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 222
    Points
    222
    Par défaut
    salut,
    dans le group by, remplace la fonction Format(ladate,"") par month(ladate)

    Bye

  12. #12
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Citation Envoyé par Jack78960 Voir le message
    salut,
    dans le group by, remplace la fonction Format(ladate,"") par month(ladate)

    Bye
    Salut,

    Tu veux dire que je le supprime vu qu'il y est déjà

  13. #13
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 222
    Points
    222
    Par défaut
    mes excuses;
    il faut soit suprimer la partie format() dans order by soit le mettre après month() ==> le tri qu"assure Order by fera un tri numérique sur Month(), fonction Month()renvoyant un numérique.

  14. #14
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    En supprimant le format... dans le groupe by, il me dit "vous avez essayer d'executer une requête ne comprenant pas l'expression spécifiée 'Format([Date....]) comme une partie de la fonctiond d'agrégat"

    Ya qqch qui coince. Dans tous les cas j'ai le même message d'erreur soit il concerne la fonction Format(), soit c'est DatePart().

  15. #15
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Alors une petite idée ?

  16. #16
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT Month([Date signature définitive]) AS MOIS, Count(AFFAIRES.Réfaffaires) AS Nombre,
    Count(AFFAIRES.Réfaffaires)/(SELECT Count(AFFAIRES.Réfaffaires) AS CompteDeRéfaffaires
    FROM AFFAIRES WHERE (((AFFAIRES.[Date signature définitive]) Between
    Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 And
    Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))) AS Part,
    Sum(AFFAIRES.[Montant honoraires HT]) AS CA, Sum(AFFAIRES.[Montant honoraires HT])/(SELECT Sum(AFFAIRES.[Montant honoraires HT]) AS CA FROM AFFAIRES WHERE (((AFFAIRES.[Date signature définitive]) Between
    Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 And
    Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))) AS [%]
    FROM AFFAIRES
    WHERE (((AFFAIRES.[Date signature définitive]) Between
    [Formulaires]![TABLEAU DE BORD TRANSAC + PRESTA]![Date1] And [Formulaires]![TABLEAU DE BORD TRANSAC + PRESTA]![Date2]))
    GROUP BY Month([Date signature définitive]), Month([Date signature définitive])
    ORDER BY Month([Date signature définitive]);
    Cordialement.

  17. #17
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Eh bien ta requête fonctionne mais en me donnant les mois par numéro mais de janvier à décembre.
    Or, chose que je n'ai pas dite, ce serait du mois d'août à juillet .
    Actuellement, ma requête ne m'affiche que 6 mois de Août 2007 à janvier 2008 (alors que je voudrais tous les mois jusque juillet avec des "-" pour les mois non encore passés) et dans le désordre (du mois en ordre alphabet.)

    Une idée ?

  18. #18
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir;

    Il suffit de mettre l'ordre de trie selon désir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT Month([Date signature définitive]) AS MOIS, Count(AFFAIRES.Réfaffaires) AS Nombre, 
    Count(AFFAIRES.Réfaffaires)/(SELECT Count(AFFAIRES.Réfaffaires) AS CompteDeRéfaffaires 
    FROM AFFAIRES WHERE (((AFFAIRES.[Date signature définitive]) 
    Between Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 And
     Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))) AS Part, 
    Sum(AFFAIRES.[Montant honoraires HT]) AS CA, Sum(AFFAIRES.[Montant honoraires HT])/
    (SELECT Sum(AFFAIRES.[Montant honoraires HT]) AS CA FROM AFFAIRES 
    WHERE (((AFFAIRES.[Date signature définitive])
     Between Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date1 
    And Formulaires![TABLEAU DE BORD TRANSAC + PRESTA]!Date2))) AS [%],
     Format([Date signature définitive],"mmmm") AS MOIS2
    FROM AFFAIRES
    WHERE (((AFFAIRES.[Date signature définitive]) 
    Between [Formulaires]![TABLEAU DE BORD TRANSAC + PRESTA]![Date1] 
    And [Formulaires]![TABLEAU DE BORD TRANSAC + PRESTA]![Date2]))
    GROUP BY Month([Date signature définitive]), Format([Date signature définitive],"mmmm"),
     Month([Date signature définitive])
    ORDER BY Format([Date signature définitive],"mmmm");
    Cordialement.

  19. #19
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Re bonsoir,

    N'étant pas certain d'avoir répondu à la demande, je propose une solution complémentaire. On crée une table-->tbl_Mois1:

    Mois..MoisNom
    1.......Janvier
    2.......Février
    3.......Mars
    4.......Avril
    5.......Mai
    6.......Juin
    7.......Juillet
    8.......Août
    9.......Septembre
    10......Octobre
    11......Novembre
    12......Décembre

    Et une requête basée sur l'une des précédentes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tbl_Mois1.Mois, qryHonoraires.Nombre, qryHonoraires.Part, 
    qryHonoraires.CA, qryHonoraires.[%], qryHonoraires.MOIS2, tbl_Mois1.MoisNom
    FROM qryHonoraires RIGHT JOIN tbl_Mois1 ON qryHonoraires.MOIS = tbl_Mois1.Mois;
    Cordialement.

Discussions similaires

  1. [VBA-EXcel] classement des noeuds d'une treeview dans l'ordre alphabétique
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/01/2017, 19h02
  2. [XL 2010] Ouvrir des fichiers dans l'ordre alphabétique
    Par gangsterus dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/06/2015, 12h03
  3. [2008R2] Tri des mois dans un graphique
    Par azewxc dans le forum SSRS
    Réponses: 2
    Dernier message: 16/07/2013, 10h22
  4. [Cubes] Tri des mois dans un cube OLAP
    Par MoroccoTeam dans le forum Outils BI
    Réponses: 1
    Dernier message: 31/05/2010, 17h04
  5. Tri des mois dans SSRS
    Par cyberg dans le forum SSRS
    Réponses: 0
    Dernier message: 01/06/2009, 23h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo