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 :

Flaguer la ligne précédente


Sujet :

SQL Oracle

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 252
    Points
    252
    Par défaut Flaguer la ligne précédente
    Bonjour,

    J'ai un problème pour lequel je n'arrive pas à trouver de solution. Je souhaiterais marquer à 1 la ligne précédente si la ligne est égale à une valeur. J'utilise les fonctions lag et lead par ailleurs dans ma requête mais je vois pas comment celle-ci peuvent m'aider pour arriver à ce que je veux.


    Exemple : je souhaite flaguer toutes les lignes précédentes des lignes ayant comme pays B ou F:


    Nom : Flag_developpez.jpg
Affichages : 251
Taille : 16,4 Ko



    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Avec un CASE en plus de LEAD :
    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
    26
    27
    28
    29
    30
    31
    32
    SQL> with t as (
    select 1 as cle, 'W' as pays from dual union all
    select 2 as cle, 'A' as pays from dual union all
    select 3 as cle, 'D' as pays from dual union all
    select 4 as cle, 'B' as pays from dual union all
    select 5 as cle, 'V' as pays from dual union all
    select 6 as cle, 'F' as pays from dual union all
    select 7 as cle, 'Y' as pays from dual union all
    select 8 as cle, 'U' as pays from dual union all
    select 9 as cle, 'D' as pays from dual union all
    select 10 as cle, 'L' as pays from dual
    )
    select cle, pays
         , case when lead(pays) over(order by cle) in ('B','F') then 1 end as flag
      from t;  2    3    4    5    6    7    8    9   10   11   12   13   14   15
     
           CLE P       FLAG
    ---------- - ----------
             1 W
             2 A
             3 D          1
             4 B
             5 V          1
             6 F
             7 Y
             8 U
             9 D
            10 L
     
    10 ligne(s) selectionnee(s).
     
    SQL>

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 252
    Points
    252
    Par défaut
    Merci, j'étais focalisé sur lag c'est pour ça que je bloquais.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/06/2007, 16h39
  2. Réponses: 2
    Dernier message: 05/04/2007, 10h39
  3. Réponses: 5
    Dernier message: 03/04/2007, 12h08
  4. lire un enregistrement d'une ligne précédente
    Par ulysse031 dans le forum JDBC
    Réponses: 17
    Dernier message: 07/02/2007, 00h24
  5. Réponses: 3
    Dernier message: 20/12/2006, 09h15

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