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 rédaction requête SQL


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Par défaut Problème rédaction requête SQL
    Bonjour,

    Je n'arrive pas à trouver la syntaxe (sans mêler 2 select imbriqués) qui me permettrait de sortir le résultat suivant de la table ci dessous.

    Par avancer merci pour vos retours, Cordialement.

    Table:

    Loc Occ Date
    1 1 01/01/2011
    1 2 01/03/2011
    1 3 01/02/2012
    2 1 01/01/2011
    2 2
    3 1 01/01/2011
    3 2 01/02/2012

    Retour souhaité :

    1 3 01/02/2012
    3 2 01/02/2012


    Je souhaite donc récupérer le Loc, le max(Occ) et sa date, que quand le max(occ) par loc a une date de renseignée.

  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
    Avec une fonction de fenêtrage :
    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
    22
    23
    24
    25
    With MaTable as
    (
    select 1 as Loc, 1 as Occ, '01/01/2011' as Date from dual union all
    select 1       , 2       , '01/03/2011'         from dual union all
    select 1       , 3       , '01/02/2012'         from dual union all
    select 2       , 1       , '01/01/2011'         from dual union all
    select 2       , 2       , null                 from dual union all
    select 3       , 1       , '01/01/2011'         from dual union all
    select 3       , 2       , '01/02/2012'         from dual 
    )
      , SR as
    (
    select Loc, Occ, Date
         , row_number() over(partition by Loc order by Occ desc) as rn
      from MaTable
    )
    select Loc, Occ, Date
      from SR
     where rn = 1
       and Date is not null
     
    Loc         Occ         Date
    ----------- ----------- ----------
    1           3           01/02/2012
    3           2           01/02/2012

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Par défaut
    Merci pour vôtre réponse.

    Par contre je n'ai pas du être assez explicite sur le contexte et je n'arrive donc pas à reproduire cette syntaxe. (Peut être n'aurais je pas du poster cette question ici).

    Contexte:
    Le fichier est sur une base oracle.
    J'utilise Windev (ou progress) pour attaquer ce fichier par ODBC.
    Dans le cas précis j'aimerais utiliser un SQLexec(......)


    Si je comprends vôtre syntaxe vous stockez une colonne complémentaire dans le fichier pour indiquer quelle ligne est au max(occ), ce qui permet ensuite de faire un simple select avec conditions.

    Mais je ne peux altérer la BDD source et le "row_number() over(partition BY Loc ORDER BY Occ DESC)" n'est pas une syntaxe reconnue.

    Y a t il une autre solution ?

    Merci de vôtre patience

  4. #4
    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
    Effectivement vous étiez sur le forum Microsoft SQL-Server, j'ai déplacé chez Oracle. J'ai du légèrement modifier le code.

    row_number() existe depuis la 8i.

    Quelle est votre version ?

Discussions similaires

  1. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15
  2. problème de requète SQL pour formulaire
    Par en_stage dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 21/06/2005, 12h21
  3. [SQL] Problème de requête SQL de plus de 8060 caractères ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 06/04/2005, 15h07
  4. [SQLserver2000][SQLServer CE] problème de requête SQL
    Par JBernn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/01/2005, 09h29
  5. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58

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