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 :

Regroupement par année


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 65
    Points : 17
    Points
    17
    Par défaut Regroupement par année
    Salut,

    Je voudrais faire un requête a l’aide de l’assistant d’Access pas en vba

    J’ai des dates du type jj/mm/aaaa et je voudrais faire un regoupement par annéé

    Dans critère, j’avais pensé à mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    format([DateDepart];"aaaa") ou Année([DateDepart])
    mais fonctionne pas

    Quelqu’un aurait une solution ?

    Merci d’avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 353
    Points
    34 353
    Par défaut
    Bonjour,
    il s'agit bien de la bonne syntaxe (Année())
    encore faut-il s'assurer que le champ est bien de type Date,
    et si possible, si tu nous explicites un peu le
    mais fonctionne pas
    ca pourra nous donner des pistes

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 65
    Points : 17
    Points
    17
    Par défaut
    re,


    Merci de ton aide, donc quand j'exécute ma requête il n'y a rien dedans juste le nom de la colonne. Mon DateDepart est bien un type date

    par contre j'ai vérifié et j'entre Année([DateDepart]) si je met ton écriture y me rajoute des "" (Année("DateDepart")) pour rechercher un caractère.

    Voila la situation

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 353
    Points
    34 353
    Par défaut
    spécifie aussi le nom de la table dans laquelle tu vas chercher ton champs

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 65
    Points : 17
    Points
    17
    Par défaut
    je viens de le faire a ta maniere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (Année([Doc]![DateDepart]))
    toujours pareil ma requete est vide

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 353
    Points
    34 353
    Par défaut
    ok,
    peux-tu nous montrer le code SQL de ta requête stp ?

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 65
    Points : 17
    Points
    17
    Par défaut
    voila ma requete en mod SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Count(Doc.DateDepart) AS CompteDeDateDepart
    SELECT Doc.Gravité
    FROM Doc
    WHERE (((Doc.DateDepart)=(Year([Doc]![DateDepart]))))
    GROUP BY Doc.Gravité, Doc.DateDepart
    PIVOT Doc.DateDepart;
    merci de ton aide

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 353
    Points
    34 353
    Par défaut


    on a du mal se comprendre

    à moins d'avoir des dates seulement en année, il est logique que tu ne puisses pas avoir d'enregistrements, vu qu'à aucun moment une date ne peut être égale à son année

    tu souhaites voir apparaitre dans ta requête d'analyse croisée les années c'est bien cela ?
    ta clause where empêche toute manipulation.

    Soit tu affiches la date, soit l'année, soit les deux, mais tu ne peux avoir un test date = année, sinon 0 enregistrement en sortie

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 65
    Points : 17
    Points
    17
    Par défaut
    re,

    donc je voudrais faire un regoupement par année dans ma table j'ai un champ DateDepart de type date et de fomat jj/mm/aaaa

    moi je voudrais les regrouper par année

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 353
    Points
    34 353
    Par défaut
    Déjà,
    si on oublie la requête d'analyse croisée...
    tu veux avoir le nombre de date par année c'est bien cela ?
    Ca donnerait ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Count(Doc.DateDepart) AS CompteDeDateDepart, Year(Doc.DatePart)
    FROM Doc
    GROUP BY Year(Doc.DateDepart)

  11. #11
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 65
    Points : 17
    Points
    17
    Par défaut
    okai, c'est exactement cela mais je voudrais que cela fasse un cumule

    si en 2003 y a 2 enregistrements et en 2004 10 je voudrais qui m'affiche 12 pour 2004

    donc pour le moment j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Count(Doc.DateDepart) AS CompteDeDateDepart, Year(Doc.DateDepart) AS Expr1, Doc.Gravité
    FROM Doc
    GROUP BY Year(Doc.DateDepart), Doc.Gravité;

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 353
    Points
    34 353
    Par défaut
    si tu nous disais tout de suite l'affichage que tu souhaites

    sans vba, ca va compliquer pas mal les requêtes par contre.

  13. #13
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 65
    Points : 17
    Points
    17
    Par défaut
    okai bah en vba alors

    je crains deja le pire

  14. #14
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    Hello,
    Pour faire un cumul il faut utiliser la fonction DSum () dans une nouvelle requête. Imaginons que la requete ci dessous tu l'aies appelé Requete1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Count(Doc.DateDepart) AS CompteDeDateDepart, Year(Doc.DateDepart) AS Expr1, Doc.Gravité
    FROM Doc
    GROUP BY Year(Doc.DateDepart), Doc.Gravité;
    Tu crées une nouvelle requete dans laquelle tu mets un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Requete2.[Year(Doc.DateDepart)], DSum("[CompteDeDateDepart]","Requete","[Year(Doc.DateDepart)]<=" & [Year(Doc.DateDepart)]) AS Cumul
    FROM Requete;
    (J'avais le même souci que toi jusque y'a 5 min Etila )

    J'espère que c'est bien ça que tu voulais !
    Bonne continuation ++

  15. #15
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 65
    Points : 17
    Points
    17
    Par défaut
    merci Dragi je pense que c'est exactement cela mais j'ai une erreur

    mise entre crochets non valide du nom 'requete1.[Year(Doc.DateDepart)]'

    quand je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT requete1.[Year(Doc.DateDepart)], DSum("[CompteDeDateDepart]","requete1","[Year(Doc.DateDepart)]<=" & [Year(Doc.DateDepart)]) AS Cumul
    FROM requete1;

    naturellement ma premiere requête s'apelle requete1 pourrais-tu me donner la bonne ecriture? :p

  16. #16
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    Moi je serai toi je renommerai le champ Year(Doc.DateDepart) dans ta 1ere requete genre AnneeDateDepart et du coup tu appelles [AnneeDateDepart] da
    ... ns la 2e requete pour éviter les conflits entre les fonctions...

  17. #17
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 65
    Points : 17
    Points
    17
    Par défaut
    hum... tu veux que je renome DateDepart en AnneeDateDepart?

    ca changera rien

  18. #18
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    non c'est Expr1 en fait j'avais pas vu que tu l'avais deja renomme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Requete2.[Expr1], DSum("[CompteDeDateDepart]","Requete","[Expr1]<=" & [Expr1]) AS Cumul
    FROM Requete;

  19. #19
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 65
    Points : 17
    Points
    17
    Par défaut
    Ca commence a etre bien

    Quand j’execute la requete j’ai :

    requete2
    Expr1 Cumul
    2003 1
    2004 715
    2004 715
    2005 774
    2005 774


    Mais j'ai un problème comme tu peux le voir y a plusieur fois la meme année (avec la meme valeur)ce qui est dû a ma gravité car il y a des <70 en 2004 des entre 70 et 200 en 2004


    si on regarde ma requete1

    CompteDeDateDepart Expr1 Gravité
    1 2003 < 70
    700 2004 < 70
    14 2004 Entre 70 et 200
    55 2005 < 70
    4 2005 Entre 70 et 200
    153 2006 < 70
    18 2006 Entre 70 et 200
    2 2006 Entre 200 et 400
    45 2007 < 70
    8 2007 Entre 70 et 200
    137 2008 < 70
    24 2008 Entre 70 et 200
    4 2008 Entre 200 et 400
    7 2009 < 70
    12 2009 Entre 70 et 200

    Comment faire pour qu’il cumule les années et la gravité pour avoir


    2003 1 <70
    2004 701 <70
    2004 14 entre 70 et 200
    2005 755 <70
    2005 18 entre 70 et 200
    .
    .
    .
    j'ai esssayé mais ... j’ai cela

    requete2
    Expr1 Cumul Gravité
    2003 1 < 70
    2004 715 < 70
    2004 715 Entre 70 et 200
    2005 774 < 70
    2005 774 Entre 70 et 200

    je supose que je fais mal mon cumule pourrais-tu encore un peu m'aider? :p

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Points : 32
    Points
    32
    Par défaut
    ton problème m'interesse

    je dois faire la meme chose mais avec des etats d'avancement

Discussions similaires

  1. [XL-2003] Regrouper par année et cumul
    Par Etila dans le forum Excel
    Réponses: 9
    Dernier message: 23/04/2009, 10h50
  2. Regroupement par année
    Par bob75000 dans le forum Access
    Réponses: 6
    Dernier message: 22/08/2006, 16h15
  3. Réponses: 5
    Dernier message: 29/09/2004, 11h05
  4. [DB2]Requête regroupement par intervals
    Par sm dans le forum DB2
    Réponses: 8
    Dernier message: 01/09/2004, 17h19
  5. Regroupement par mois
    Par fplanglois dans le forum SQL
    Réponses: 7
    Dernier message: 29/07/2003, 16h32

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