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éré les deux dernier prix par produit


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 14
    Par défaut récupéré les deux dernier prix par produit
    Bonjour,

    je galère un peux sur cette requette dont le but est de récupérer les deux dernier prix affecter par produit ce qui permet par la suite de calculer son augmentation.

    La requette doit me ramener la ref_produit,dernier_prix, avant_dernier_prix,date d'effet de cette modification. --> pour tous les produits

    Toutes ces données sont sur une seule table:

    T1(ref_produit,Prix,dzte_d'effet)

    Pour l'instant je récupère des données à l'aide de la requette ci-dessous mais tous les cas ne sont pas prix en compte.
    ******************************************************
    SELECT MAX(prix) , MIN(prix) , MATRICULE
    FROM (select prix,ref_produit,DATE_EFFET
    from (
    SELECT prix, DATE_EFFET, ref_produit
    FROM T1
    ORDER BY DATE_EFFET DESC )
    where rownum <604)
    group by ref_produit
    *******************************************************

    je sais, j'ai fais compliqué

    Si quelqu'un à déja eu ce type de demande, je suis preneur de toutes les idées

    merci par avance

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Commencez par répondre à la question que est-ce vous devez faire si plus de 2 changements de prix ont été fait à la même date!

    Utilisez les fonctions analytiques pour ordonner par rapport à la date d'effet.

    Gardez que le deux premières enregistrements par produit

    Faite pivoter le resultat ou utilisez les fonction analytiques pour afficher sur la même ligne les deux prix

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 14
    Par défaut
    Merci pour la réponse,

    je suis daccord avec l'algo enoncé, c'est la syntaxe sql qui me bloque dans votre explication.
    pour la question que faire si plusieurs changement de prix la même date, l'attribut date est en faites un un atribut date/heure ce qui fait que je peux récupérer les informations les plus récentes même pour un même jour.

  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
    Essayez ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    WITH SR AS
    (
      SELECT ref_produit, prix,
             lead(prix) over(partition by ref_produit order by date_effet desc) as last_prix,
             date_effet,
             row_number() over(partition by ref_produit order by date_effet desc) as rn
        FROM T1 
    )
    SELECT ref_produit, prix, last_prix, date_effet
      FROM SR
     WHERE rn = 1;

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Et dans post précédant j’ai voulu ajouter aussi:

    Sinon attendez que Waldar lit votre post il vous donnera ensuite la requête.

  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

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 32
    Par défaut
    Essayez cette requête:

    select ref_produit,max(prix),min(prix), to_char(max(date_effet),'dd-mm-yyyy hh24:mi') from t1
    group by ref_produit;

  8. #8
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 14
    Par défaut
    Merci pour vos réponses


    la requette avec les fonction analytiques me donne bien ce que je souhaite

    Je ne maitrisais pas les fonction analytiques
    Je vais pallier a ce problème

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

Discussions similaires

  1. choper les deux derniers caractères d'une variable
    Par Mangacker dans le forum C++Builder
    Réponses: 12
    Dernier message: 14/11/2007, 20h08
  2. Réponses: 15
    Dernier message: 28/02/2007, 11h00
  3. Extraire les deux dernieres lettres d'une cellule
    Par SybVicious dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/09/2006, 12h54
  4. [Access] Afficher les deux derniers enregistrement
    Par badnane2 dans le forum Access
    Réponses: 10
    Dernier message: 08/07/2006, 15h02
  5. [VB.Net] Afficher les deux derniers enregistrement
    Par badnane2 dans le forum Windows Forms
    Réponses: 15
    Dernier message: 07/07/2006, 20h54

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