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 pour rapport mensuel


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai Avatar de miandry_rabe
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Requête pour rapport mensuel
    Bonjour à Tous,

    Dans la compagnie où je travaille, nous faisons des analyses de vibration des équipements. Il existe des routes mensuelles dans lesquelles on fait des prélèvements de niveau de vibration (codé de 1 à 5) des équipements dans l'usine. Ces données sont collectées dans une table excel.
    Pour simplifier ma question,dans cette table, j'ai une feuille contenant 3 colonnes (Equipement, Date_de_rapport, Niveau_de_Vibration). Ci-dessous un exemple. Il y a 5 equipements dont il faut faire des prélèvement de vibration tous les mois.

    Equipement Date_de_rapport Niveau_de_Vibration
    Equi_1 janv-17 1
    Equi_2 janv-17 2
    Equi_3 janv-17 4
    Equi_4 janv-17 1
    Equi_5 janv-17 5
    Equi_1 févr-17 2
    Equi_2 févr-17 3
    Equi_3 févr-17 4
    Equi_1 mars-17 2
    Equi_2 mars-17 3
    Equi_3 mars-17 4
    Equi_4 mars-17 3
    Equi_5 mars-17 5
    Equi_1 avr-17 2
    Equi_2 avr-17 4
    Equi_4 avr-17 5
    Equi_5 avr-17 5
    Comme vous pouvez le voir, le niveau de vibration des 5 équipements n’appariaient pas systématiquement à chaque mois.
    Ma question est-il possible d'écrire une requête qui me donnera le niveau de vibration de chaque équipement par mois en tenant compte que si le niveau de vibration d'un équipement X (Equi_4 par exemple) n'a pas été enregistré pendant un mois M (mois de février par exemple), il faut prendre son niveau de vibration le plus récent (mois de janvier)?

    Le but est de sortir un graph rapportant l'évolution des niveaux de vibration des équipements par mois tous en gardant le même nombre d'équipements à chaque mois.
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 241
    Points : 19 367
    Points
    19 367
    Billets dans le blog
    61
    Par défaut
    Bonjour,

    C'est compliqué !

    Il faudrait je pense partir d'une table T_Mois(IndMois) contenant les numéros des mois (1,2,3,...,12).

    Ensuite, si vous souhaitez avoir dans votre résultat tous les mois de l'année, il faudrait construire une requête R_EquipementMois, basée sur les tables T_Mois et T_Equipement :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_Equipement.NomEquipement, T_Mois.IndMois, CDate(DateSerial(Year(Date()),[IndMois],1)) AS Mois
    FROM T_Mois, T_Equipement;

    * Ici je suppose que vous disposez d'une table T_Equipement(NomEquipement,...)

    Enfin, il faudrait construire une requête basé sur la table Vibrations et la requête R_EquipementMois, comportant une sous-requête :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT R_EquipementMois.NomEquipement, R_EquipementMois.Mois, T_VibrationEquipement.Niveau_de_vibration, IIf(Not IsNull([Niveau_De_Vibration]),[Niveau_De_Vibration],(select [Niveau_de_Vibration] from T_VibrationEquipement T1 where (T1.Equipement=NomEquipement) and [Date_De_Rapport] in (select Max([Date_De_Rapport]) from T_VibrationEquipement T2 where (T2.Equipement=NomEquipement) and (T2.[Date_De_Rapport]<=[Mois])))) AS Niveau_Vibration
    FROM R_EquipementMois LEFT JOIN T_VibrationEquipement ON (R_EquipementMois.Mois = T_VibrationEquipement.Date_De_Rapport) AND (R_EquipementMois.NomEquipement = T_VibrationEquipement.Equipement);

    * Ici je suppose que votre table se nomme T_VibrationEquipement.

    * La sous-requête :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    (select [Niveau_de_Vibration] from T_VibrationEquipement T1 where (T1.Equipement=NomEquipement) and [Date_De_Rapport] in (select Max([Date_De_Rapport]) from T_VibrationEquipement T2 where (T2.Equipement=NomEquipement) and (T2.[Date_De_Rapport]<=[Mois])))) AS Niveau_Vibration

    Ramène le niveau de vibration de l'équipement pour le dernier mois passé, si pour ce mois il n'y a pas eu de mesure.

    A adapter,
    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre à l'essai Avatar de miandry_rabe
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Merci pour cette réponse. Je vais l'essayer et je te donne un retour une fois fini.

  4. #4
    Membre à l'essai Avatar de miandry_rabe
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Bonjour User,

    J'ai testé les codes que tu as fourni en adaptant les noms des champs et tables et cela fonctionne parfaitement dans MS Access 2010.

    En général il y aura 3 fichers excel dans les quels on va enregistrer les données (tous avec le même format T_Equipement, T_Mois, T_VibrationEquipement). Après sur un quatrième ficher Excel, je vais persécuter une requête à l'aide de power query pour la concaténation des données. L'importation et la concaténation ne pose pas un problème pour moi. C'est au niveau de la transformation du code sql en language Power Query M qui me pose un soucis.
    Pourrais-tu stp m'aider à convertir ces codes en power query M?

    Cordialement,

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/10/2015, 10h43
  2. Réponses: 1
    Dernier message: 27/03/2009, 11h16
  3. Réponses: 3
    Dernier message: 16/04/2007, 14h28
  4. Requête pour remplacer caractères dans une table
    Par elliott1961 dans le forum Installation
    Réponses: 5
    Dernier message: 16/01/2006, 02h47
  5. requête pour exclure les doublons.
    Par sam01 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/11/2005, 20h10

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