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

Développement SQL Server Discussion :

Analyse de plage de dates


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Analyse de plage de dates
    Bonjour tout le monde,

    Je me permet de solliciter votre aide pour un problème SQL. Je possède 2 tables comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    TABLE CARRIERE
    ID - DATE_DEBUT - DATE_FIN
    A1 - 01/01/2010 - 31/12/2010
    A1 - 01/01/2011 - 30/04/2011
    A1 - 01/07/2013 - 10/11/2015
    
    TABLE STATUT 
    ID - STATUT      - DATE_DEBUT - DATE_FIN
    A1 - NONCADRE -  01/01/2010   - 31/12/2011
    A1 - CADRE       -  01/01/2012   - 31/09/2013
    A1 - NONCADRE -  01/10/2013   - 10/11/2015
    Et voila maintenant la table que je voudrais avoir suite à une requête en résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TABLE RESULTAT
    ID - STATUT      - DATE DEBUT - DATE FIN
    A1 - NONCADRE - 01/01/2010   - 31/12/2010
    A1 - NONCADRE - 01/01/2011   - 30/04/2011
    A1 - CADRE       - 01/07/2013   - 31/09/2013
    A1 - NONCADRE - 01/10/2013   - 31/11/2015
    La première table permet d'avoir l'historique des fonctions d'un employé (ici A1). La seconde permet de savoir son statut (Cadre - Non Cadre) historisé de date à date. L'absence de données dans la table carrière entre 30/04/2011 et 01/07/2013 correspond à une absence (exemple : en mission dans un autre service, absence, maladie, ...), pendant laquelle il n'avait plus de fonctions mais toujours un statut.
    La demande consiste à remonter des sur les périodes de sa carrière s'il était cadre ou non cadre (table résultat souhaitée) sachant que sur certaines périodes, il a pu passer d'un statut cadre à non cadre (ou inversement) sans changer de fonction.

    Je n'arrive pas à monter ma requête... Pouvez-vous m'aider svp ?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Sans description de la règle permettant de passer de l'un à l'autre, il est difficile de monter une requête.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 14
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Sans description de la règle permettant de passer de l'un à l'autre, il est difficile de monter une requête.
    Oubli réparé, désolé

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Vous pouvez essayer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT 
    		C.ID
    	,	S.statut
    	,	CASE WHEN C.date_debut > S.date_debut THEN C.date_debut ELSE S.date_debut END AS debut
    	,	CASE WHEN C.date_fin < S.date_fin THEN C.date_fin ELSE S.date_fin END as fin
    FROM CARRIERE C
    INNER JOIN STATUT S
    	ON S.ID = C.ID
    	AND (
    		S.date_debut BETWEEN C.date_debut AND C.date_fin
    		OR S.date_fin BETWEEN C.date_debut AND C.date_fin
    		OR C.date_debut BETWEEN S.date_debut AND s.date_fin
    	)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 14
    Points : 14
    Points
    14
    Par défaut
    Nickel, la requête fonctionne parfaitement.

    Un grand merci.

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

Discussions similaires

  1. [CR XI] Plage de date dans une commande SQL pour une analyse de pareto
    Par Gdf.pdo dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 03/09/2009, 11h35
  2. [SQL Server 8] Trouver une plage de date
    Par Baquardie dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/04/2006, 19h30
  3. [CR]Aide sur les fonction de date et plage de date.
    Par Job dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 08/11/2005, 09h19
  4. [date] Recherche dans une plage de dates
    Par astro84 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/06/2005, 17h13
  5. Sélection d'une plage de dates
    Par Bouanda dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/10/2004, 20h27

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