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 :

Requête un peu complexe


Sujet :

Requêtes et SQL.

  1. #1
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 768
    Points : 43 940
    Points
    43 940
    Par défaut Requête un peu complexe
    Bonsoir,

    J'ai une table avec comme champs année, mois et valeur.

    Je cherche à obtenir le résultat suivant :
    mois 01 resultat=valeur mois 01
    mois 02 resultat=valeur mois01+valeur mois 02
    mois 03 resultat=valeur mois01+valeur lois 02+valeur mois 03
    etc..

    Y a t'il moyen de faire cela soit avec QBE ou SQL ou faut t'il passer par du vba ?

    Merci de votre aide.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 777
    Points : 58 179
    Points
    58 179
    Billets dans le blog
    42
    Par défaut
    salut,

    c'est un cumul des mois précédents, c'est ça ?

    un truc comme ça avec DSum:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Annee, mois,
              Dsum("valeur", "LaTable", "Annee=" & annee & " AND mois<=" & Mois) as cumul
    FROM LaTable
    ORDER BY Annee, mois

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 777
    Points : 58 179
    Points
    58 179
    Billets dans le blog
    42
    Par défaut
    variante avec jointure:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT T1.Mois,
           T1.annee,
           SUM(T2.valeur) AS cumul
    FROM   LaTable T1
           INNER JOIN LaTable T2
                   ON T1.annee = T2.annee
    WHERE  T2.Mois <= T1.Mois
    GROUP  BY T1.Mois,
              T1.Annee

    à vérifier tout de même...

  4. #4
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT
          T1.Annee
        , T1.Mois
        , ( SELECT 
                SUM(T2.Montant)
            FROM
                LaTable T2
            WHERE
                Cstr(T2.Annee) & Format(T2.mois,"00") <= Cstr(T1.Annee) & Format(T1.mois,"00") ) AS Cumul
    FROM
        LaTable T1
    La différence entre la deuxième solution de f-leb et la mienne est que,
    dans la solution de f-leb, tu obtiens un cumul qui reprend, année par année
    dans la mienne, le cumul traverse les années.

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 768
    Points : 43 940
    Points
    43 940
    Par défaut c'est bon
    Merci f-leb, ta solution avec Dsum a résolu mon prob. Je l'ai adapté en virant la gestion des années que je n'avais pas besoin.

    Les 2 solutions sont interessantes. La solution Dsum par sa souplesse, la solution Sql est interessante de par sa compatibilité SQL mais je n'ai pas essay" cette solution.

    Merci.

  6. #6
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Tu réinitialise bien ton cumul chaque année ?

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 063
    Points : 24 668
    Points
    24 668
    Par défaut
    Attention au Dsum sur les gros volumes de données.

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 768
    Points : 43 940
    Points
    43 940
    Par défaut DSum
    Merci pour l'info loufab, mon volume d'info est très faible mais c'est bon à savoir.

    Maxence, je n'utilises que l'année n voire n-1 Chaque "mois est stocké dans 1 enregistrement dans 1 table. Ma requete se fait sur les données necessaires ( n et/ou n-1 )

  9. #9
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 777
    Points : 58 179
    Points
    58 179
    Billets dans le blog
    42
    Par défaut
    Si il n'y a pas l'année à prendre en compte et qu'on souhaite éviter DSum:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T1.mois, Sum(T2.valeur) as Cumul
    FROM LaTable T1, LaTable T2
    WHERE T2.mois<=T1.mois
    GROUP BY T1.mois

    bof

    Citation Envoyé par Maxence HUBICHE Voir le message
    ...dans la mienne, le cumul traverse les années.
    La requête qui traverse les âges, sans doute une requête immortelle écrite par Connor MacLeod du clan des MacLeod.
    à la fin il ne peut en rester qu'une

  10. #10
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    hmmmm
    f-leb, je serais toi, je reverrais cette proposition !

    Le cumul à travers les années n'implique pas seulement la somme de tous les mois ayant un N° inférieur à celui en cours

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une requête un peu complexe.
    Par kitoufloux dans le forum Langage SQL
    Réponses: 22
    Dernier message: 09/03/2011, 20h07
  2. requête un peu complexe pour moi (delete + distinct + max)
    Par mdr_cedrick dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/08/2008, 12h38
  3. Requête un peu complexe
    Par yblok dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 29/04/2008, 14h21
  4. Construction d'une requête un peu complexe
    Par dauphin34000 dans le forum SQL
    Réponses: 9
    Dernier message: 24/05/2007, 11h43
  5. Création d'une requête un peu complexe
    Par vpicchi dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 17/01/2007, 21h52

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