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 :

Récupérer le contenu d'un champ pour les lignes précédentes


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2017
    Messages : 66
    Par défaut Récupérer le contenu d'un champ pour les lignes précédentes
    Bonjour,

    J'ai la table suivante :
    Nom : 1.png
Affichages : 296
Taille : 12,9 Ko

    Et je voudrais obtenir le résultat suivant au niveau de la colonne "Type" :
    Nom : Résultat.JPG
Affichages : 277
Taille : 54,8 Ko

    Pour un même produit, je dois récupérer le contenu du champ type pour tous les codes <= au code renseigné.

    Auriez-vous une idée de comment obtenir cela svp ?

    Merci d'avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 174
    Par défaut
    Bonjour,

    Je suppose que lignes que tu veux compléter sont celles pour lesquelles type est NULL. Tu peux faire une requête de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    with t1 as (select produit, 
                            code, 
                            type,
                            count(type) over (partition by produit order by code) cnt
                    from t
                   )
    select produit,
             code,
             nvl(type, max(type) over (partition by produit order by cnt range between 1 following and 1 following)) type
    from t1;

  3. #3
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2017
    Messages : 66
    Par défaut
    Je viens de tester et ça fonctionne parfaitement bien !

    Merci beaucoup.
    Bonne journée.

  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
    Pour le coup il y a plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      select produit, code
           , last_value(type ignore nulls) over(partition by produit order by code desc) as type
        from t
    order by produit, code;

  5. #5
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2017
    Messages : 66
    Par défaut
    Hmm non cela ne marche pas.
    Au lieu de compléter mes lignes vides qui sont inférieurs ou égales à mon champ "Code", cela les complète dans l'autre sens, en prenant les codes >=.

  6. #6
    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
    Vous avez bien vu que le tri est descendant pour le code dans la fonction last_value ?

  7. #7
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 174
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Pour le coup il y a plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      select produit, code
           , last_value(type ignore nulls) over(partition by produit order by code desc) as type
        from t
    order by produit, code;
    Oui bien joué. Je l'avais oubliée celle là, last_value avec la possibilité d'ignorer les nulls.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/11/2017, 15h58
  2. Réponses: 4
    Dernier message: 06/08/2012, 15h49
  3. Réponses: 9
    Dernier message: 08/07/2012, 18h36
  4. Réponses: 2
    Dernier message: 14/02/2006, 14h59
  5. Récupérer le contenu d'un champs pour un calcul ?
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/01/2006, 10h25

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