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

SQL Oracle Discussion :

requete simple avec date


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    236
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 236
    Par défaut requete simple avec date
    J'ai une requete a priori simple que je n'arrive pas a effectuer...
    Je dois etre fatiguée la..

    J'ai les dates de changements de statut de personne:
    Par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CAT_ID	TPS
    E	2003/01/01 00:00:00.000
    C	2004/07/01 00:00:00.000
    J'aimerais en fait recuperer le statut de la personne sur une année précise..
    Par ex:
    en 2007, je voudrais C
    Mais en 2003, c'est E.

    Les dates sont calculées en faisant :
    pour 2007:to_date('31/12/' || (to_char(sysdate,'yyyy')),'DD/MM/YYYY')
    pour 2006:to_date('31/12/' || (to_char(sysdate,'yyyy')-1),'DD/MM/YYYY')

    Je n'arrive plus a faire mes requetes :-(

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Ben soit tu as la fonction extract qui te renvoie un nombre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT EXTRACT (YEAR FROM TPS)
    Soit le to_char qui te renvoie du char
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TO_NUMBER(TO_CHAR(TPS, 'YYYY'))

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT EXTRACT (YEAR FROM SYSDATE), TO_CHAR(SYSDATE, 'YYYY')
    FROM dual
    EXTRACT(YEARFROMSYSDATE)	TO_CHAR(SYSDATE,'YYYY')
    		    2007	2007

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    236
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 236
    Par défaut
    Non mon souci ce n'est pas d'extraire l'année...C'est que j'aimerais récupérer la categorie de la personne en fonction d'une date..

    Selon mon exemple dans le 1er post:
    En 2003: la catégorie est 'E'
    En 2004: la catégorie est 'C'
    En 2005: la catégorie est 'C'
    En 2006: la catégorie est 'C'
    En 2007: la catégorie est 'C'

    Par ex, si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select cat_id
    from h_categ
    where tps <= to_date('31/12/' || to_char(sysdate,'yyyy')),'DD/MM/YYYY')
    il me sort C et E. Ce qui est normal.

    Mais moi je veux que C pour 2007.

    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select cat_id
    from h_categ
    where tps <= to_date('31/12/' || to_char(sysdate,'yyyy')-4),'DD/MM/YYYY')
    Je voudrais qu'il me sorte 'E'

  5. #5
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2
    Par défaut
    Quand tu as une table d'historique qui n'a qu'une date d'effet il faut que tu te limite à la ligne qui a la date la plus grande répondant à ton critère soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT cat_id
    FROM h_categ
    WHERE tps=(SELECT MAX(tps) 
               FROM h_categ
               WHERE tps <= to_date('31/12/' || to_char(sysdate,'yyyy')),'DD/MM/YYYY'))
    Bon là c'est avec une sous-requête mais je n'ai pas le temps de réfléchir si on peut s'en passer. Et en plus il faut ramener tout ça au bon employé j'imagine.

    En général c'est plus simple si tu as une date de début et une date de fin au lieu d'une date d'effet.

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    236
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 236
    Par défaut
    Quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select cat_id ,TO_DATE('30/12/1899', 'DD/MM/YYYY') + hca_date + 2 as tps  
    from h_categ
    where 
    sal_matr=130141
    and 
    TO_DATE('30/12/1899', 'DD/MM/YYYY') + hca_date + 2 <= (select MAX(TO_DATE('30/12/1899', 'DD/MM/YYYY') + hca_date + 2 )  from h_categ where (TO_DATE('30/12/1899', 'DD/MM/YYYY') + hca_date + 2 )<= '31/12/2007'
    and sal_matr=130141)
    Il me renvoie encore les 2 catégories et non celle qui convient...

    J'ai l'impression qu'il n'arrive pas a faire le MAX sur la date

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

Discussions similaires

  1. Requetes paramétrés avec Date et BETWEEN
    Par mehdi_scofield dans le forum ASP.NET
    Réponses: 3
    Dernier message: 06/11/2008, 14h05
  2. Requete SQL avec date !
    Par sab_etudianteBTS dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/02/2007, 21h49
  3. [C# et Asp.net] requete SQL avec date
    Par misscricri dans le forum Accès aux données
    Réponses: 4
    Dernier message: 20/02/2007, 16h31
  4. requete select avec date
    Par druglord dans le forum Requêtes
    Réponses: 9
    Dernier message: 07/08/2006, 10h47
  5. [SQL] Requete sql avec dates
    Par SergeF dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/03/2006, 16h53

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