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 :

Problème SQL de base


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 26
    Par défaut Problème SQL de base
    Bonjour,

    J'ai la table suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    MATABLE (
    NUMCOMPTE VARCHAR2(20)
    DATEVAL DATE
    VALEUR NUMBER
    )
     
    NUMCOMPTE            DATEVAL                 VALEUR
    -------------------- ------------------- ----------
    007                  08/05/2009 10:46:15         10
    007                  28/05/2009 10:46:15         21
    007                  17/06/2009 10:46:15         13
    007                  07/07/2009 10:46:15         53
    008                  18/05/2009 10:46:15         43
    008                  07/06/2009 10:46:15         32
    008                  27/06/2009 10:46:15         56
    008                  07/07/2009 10:46:15          5
    Je souhaiterai avoir le champ 'valeur' pour min(DATEVAL) et max(DATEVAL)
    Pour l'un ou l'autre je ferai bien comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT a.NUMCOMPTE, a.DATEVAL, a.VALEUR 
    FROM MATABLE a,
    (
    SELECT NUMCOMPTE, min(DATEVAL) DATEVALMIN
    FROM MATABLE  
    group by NUMCOMPTE
    ) b
    where a.DATEVAL = b.DATEVALMIN
     
    NUMCOMPTE            DATEVAL                 VALEUR
    -------------------- ------------------- ----------
    007                  08/05/2009 10:46:15         10
    008                  18/05/2009 10:46:15         43
    La récupération de la valeur min est-elle correcte, ou existe-t-il une manière plus élégante, évidente ?

    Existe-t-il un moyen de récupérer le champ 'VALEUR' pour la min et le max de ma dateval en une seule requête ?

    Merci à vous.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Je pense que votre problème est mal formulé.

    Vous voulez connaître par compte les valeurs aux dates minimale et maximale ?

    Est-ce que vous souhaitez obtenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    NUMCOMPTE            DATEVAL                 VALEUR
    -------------------- ------------------- ----------
    007                  08/05/2009 10:46:15         10
    007                  07/07/2009 10:46:15         53
    008                  18/05/2009 10:46:15         43
    008                  07/07/2009 10:46:15          5
    Ou ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    NUMCOMPTE     DATEVAL_MIN VALEUR_MIN DATEVAL_MAX VALEUR_MAX 
    ------------- ----------- ---------- ----------- ----------
    007           08/05/2009          10 07/07/2009          53
    008           18/05/2009          43 07/07/2009           5
    Ou encore autre chose ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 26
    Par défaut
    Bonjour,

    Je souhaiterai obtenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    NUMCOMPTE            DATEVAL                 VALEUR
    -------------------- ------------------- ----------
    007                  08/05/2009 10:46:15         10
    007                  07/07/2009 10:46:15         53
    008                  18/05/2009 10:46:15         43
    008                  07/07/2009 10:46:15          5
    Effectivement, après relecture cela n'était pas clair, désolé.

    Merci à vous.

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT NUMCOMPTE, min(DATEVAL) DATEVALMIN
    FROM MATABLE  
    GROUP BY NUMCOMPTE
    UNION ALL 
    SELECT NUMCOMPTE, max(DATEVAL) DATEVALMAX
    FROM MATABLE  
    GROUP BY NUMCOMPTE
    Edit : oups... il manque valeur

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 26
    Par défaut
    Bonjour,

    Pas tout à fait orafrance....

    Il me faut le champ 'VALEUR'

    Pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE MATABLE (
    NUMCOMPTE VARCHAR2(20),
    DATEVAL DATE,
    VALEUR NUMBER
    );
     
    insert into MATABLE  values ('007',sysdate-60,10);
    insert into MATABLE  values ('007',sysdate-40,21);
    insert into MATABLE  values ('007',sysdate-20,13);
    insert into MATABLE  values ('007',sysdate,53);
    insert into MATABLE  values ('008',sysdate-50,43);
    insert into MATABLE  values ('008',sysdate-30,32);
    insert into MATABLE  values ('008',sysdate-10,56);
    insert into MATABLE  values ('008',sysdate,5);
    Merci de votre contribution.

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Et toi il ne te manque que le MAX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT a.NUMCOMPTE, a.DATEVAL, a.VALEUR
    FROM MATABLE a,
    (
    SELECT NUMCOMPTE, min(DATEVAL) DATEVALMIN, max(DATEVAL) DATEVALMAX
    FROM MATABLE
    GROUP BY NUMCOMPTE
    ) b
    WHERE a.DATEVAL IN (b.DATEVALMIN, b.DATEVALMAX)
      AND a.NUMCOMPTE = b.NUMCOMPTE
    ORDER BY 1,2
    Attention à ne pas oublier la jointure sur NUMCOMPTE

  7. #7
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Salut,

    Essaie cette requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    SELECT   a.numcompte, MIN (a.dateval) dateval,
             MIN (a.valeur)KEEP (DENSE_RANK FIRST ORDER BY a.dateval) valeur
        FROM matable a
    GROUP BY a.numcompte
    UNION
    SELECT   a.numcompte, MAX (a.dateval) dateval,
             MAX (a.valeur)KEEP (DENSE_RANK FIRST ORDER BY a.dateval DESC) valeur
        FROM matable a
    GROUP BY a.numcompte;
     
     
    NUMCOMPTE            DATEVAL        VALEUR
    -------------------- ---------- ----------
    007                  2009-05-08         10
    007                  2009-07-07         53
    008                  2009-05-18         43
    008                  2009-07-07          5
     
     
    4 rows selected.

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

Discussions similaires

  1. Problème d'attachement base de données SQL-Server 2008
    Par hanitax dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/01/2012, 06h55
  2. [Problème][SQL server 2005] Restaurer la base de donner
    Par valb12 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/02/2011, 22h05
  3. Réponses: 0
    Dernier message: 28/04/2010, 14h44
  4. Réponses: 7
    Dernier message: 07/05/2009, 17h32
  5. [SQL] Problème insertion dans Base SQL après saisie d'un formulaire
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 15/05/2007, 13h44

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