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 - calcul de délai entre deux valeurs d'un même champ [Toutes versions]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 65
    Points : 53
    Points
    53
    Par défaut Requête - calcul de délai entre deux valeurs d'un même champ
    Bonjour,
    J'ai une requête un peu complexe à vous soumettre. Ce n'est pas facile de décrire ce que je veux faire en trois mots dans le titre...
    Je cherche la solution la plus simple... Je pourrai faire une usine à gaz en VBA, mais si une requête pouvait me faire cela, je serais bien content !

    voici ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NumSuivi : entier long
    DateSuivi : date
    La clé : Numsuivi et DateSuivi ensemble.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Numsuivi DateSuivi:
    1           01/01/2009
    1           01/02/2009
    1           15/02/2009
    2           15/01/2009
    2           25/02/2009
    etc...
    L'objectif de la requête est de connaitre les délais entre deux dates "consécutives" ayant un même NumSuivi.
    Le résultat de la requête doit donc être :
    Je serais bien content d'avoir un peu d'aide pour réaliser le plus simplement possible une telle requête !
    Merci d'avance à tous !

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonjour,

    A mon avis c'est plus simple en VBA mais voici une solution en SQL :

    1. ranger la table avec un n° d'ordre (commence à 0) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select numsuivi, datesuivi, dcount("*", "MaTable", "numsuivi=" & numsuivi & " and datesuivi<" & datesuivi) as rang from MaTable
    2. interroger cette requete sur 2 enregistrements consécutifs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select numsuivi, datesuivi-dlookup("datesuivi", "MaRequete", "numsuivi=" & numsuivi & " and rang=" & rang-1) as ecart from MaRequete where rang>=1 order by numsuivi, datesuivi
    NB : where rang>=1 sert à avoir pour chaque numsuivi autant d'écarts que le nombre de lignes - 1
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 65
    Points : 53
    Points
    53
    Par défaut
    Merci Nico pour ta réponse.
    C'est super on avance !

    J'ai l'impression qu'il y a un petit souci dans ta requête, le dcount m'affiche le nombre de ligne pour un même numsuivi, alors que je pense tu voulais afficher leur rang.
    En fait on a ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Numsuivi DateSuivi    rang
    1           01/01/2009 3
    1           01/02/2009 3
    1           15/02/2009 3
    2           15/01/2009 2
    2           25/02/2009 2

    au lieu de ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Numsuivi DateSuivi    rang
    1           01/01/2009 1
    1           01/02/2009 2
    1           15/02/2009 3
    2           15/01/2009 1
    2           25/02/2009 2
    Donc par quoi je peux remplacer dcount pour numéroter mes lignes ???

    Merci d'avance,
    je continue de chercher de mon côté

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Dans le Dcount il y a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " and datesuivi<" & datesuivi
    pour afficher le rang et non le nombre !
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 65
    Points : 53
    Points
    53
    Par défaut
    Oui effectivement,

    le problème c'est qu'avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " and datesuivi<" & datesuivi
    le champ rang est à 0 pour toutes les lignes,
    alors pour tester j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " and datesuivi>" & datesuivi
    Et là j'obtiens ce que je t'ai montré. Donc le nombre de date pour chaque numsuivi...

    As-tu autre chose ?

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    C'est un problème de conversion : il faut l'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and datesuivi<cdate('" & datesuivi & "')"
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 65
    Points : 53
    Points
    53
    Par défaut
    Merci Nico, tu es un AS !

    Grâce à toi je n'ai pas à monter une usine à gaz !

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

Discussions similaires

  1. [2008] Calculer un délai entre deux dates
    Par Chris L' Arabis dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 31/07/2014, 19h21
  2. [XL-2010] TCD champ calculé entre plusieurs valeurs d'un même champ
    Par Denis_67 dans le forum Excel
    Réponses: 6
    Dernier message: 27/05/2014, 10h35
  3. Calcul de délai entre deux dates
    Par bouchoc dans le forum DB2
    Réponses: 3
    Dernier message: 28/05/2010, 14h04
  4. Réponses: 7
    Dernier message: 13/12/2006, 12h57
  5. Requête pour calculer le temps entre deux dates
    Par Badboy62cfp dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 13h50

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