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

Langage SQL Discussion :

Requête imbriquée : Coup de main requête sql


Sujet :

Langage SQL

Vue hybride

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 243
    Par défaut Requête imbriquée : Coup de main requête sql
    Bonjour à tous,

    j'ai une table;

    fac_id, num_fac, dt_fac
    1111 23456 01/01/2015
    1112 56678 02/01/2015



    Je veux récupérer le fac_id du chaque mois dont le num_fac est le plus grand.

    Merci d'avance de votre aide, n'hésitez pas à revenir vers moi si je ne suis pas clair.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bonjour,

    Quel est votre SGBD ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 243
    Par défaut
    Citation Envoyé par punkoff Voir le message
    Bonjour,

    Quel est votre SGBD ?
    le SGBD est oracle 11g

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 682
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Essayez comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select fac_id
    from ma_table main
    where month(dt_fac) = $var_mois  
      and not exists
         (select 1 from ma_table subq
          where month(subq.dt_fac) = $var_mois
            and subq.num_fac > main.num_fac)
    J'ai mis une variable pour le mois, pour pouvoir exécuter ce traitement en début de mois, afin d'extraire les données du mois précédent

    Bien sur, il faut que DT_FAC soit une colonne de type date !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 243
    Par défaut
    Bonjour,

    Merci pour votre réponse, quand je lance la requete ci-dessus, j'ai une seule ligne,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select fac_id
    from facture fac1
    where dt_fac BETWEEN '01/01/2013' AND '29/06/2013' 
      and not exists
         (select 1 from facture fac2
          where fac2.dt_fac BETWEEN '01/01/2013' AND '29/06/2013'
            and fac2.num_fac > fac1.num_fac)
    le résultat, j'ai qu'une seule ligne, moi je souhaite avoir une fac_id pour chaque mois pendant la période d'analyse.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 682
    Billets dans le blog
    10
    Par défaut
    OK, je n'avais pas compris cela, en ce cas, procédez comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    WITH CTE AS                                     
        (SELECT ROW_NUMBER()                        
                OVER(PARTITION BY MONTH(DT_FAC)     
                     ORDER BY NUM_FAC DESC) AS RANG 
               ,DT_FAC
               ,FAC_ID                              
               ,NUM_FAC                             
         FROM MA_TABLE)                             
    SELECT * FROM CTE WHERE RANG=1

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

Discussions similaires

  1. Un petit coup de main en SQL, SVP
    Par mazeille dans le forum Langage SQL
    Réponses: 12
    Dernier message: 11/10/2013, 15h22
  2. Réponses: 2
    Dernier message: 17/01/2012, 11h09
  3. [MySQL] Erreur SQL 1064 : Requête imbriquée avec jointure !
    Par patchankito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 31/01/2006, 11h37
  4. besoin d'un coup de main pour une requête ;)
    Par Fabouney dans le forum Requêtes
    Réponses: 3
    Dernier message: 15/11/2005, 00h14
  5. [PL/SQL]requête imbriquée
    Par Nadine dans le forum Oracle
    Réponses: 6
    Dernier message: 01/02/2005, 17h21

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