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 :

Afficher ligne à 0 dans requête analytique


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 12
    Par défaut Afficher ligne à 0 dans requête analytique
    Bonjour à tous,

    J'ai une question concernant les requêtes analytiques.

    Je me fais une table qui contient par exemple ces données :

    tbl_mois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SITE  CD_MOIS  CA
    A       0           10
    A       1           11
    A       2           9
    A       4           6
    A       5           15
    je veux afficher une requête qui me permet d'afficher pour chaque mois (CD_MOIS représente le code du mois, donc une valeur linéaire), la valeur du CA du mois et du mois précédent.

    Je pourrai utiliser cette requête :

    select CD_MOIS, CA, first_value(CA) over (partition by site order by aaaamm range between 1 preceding and 1 preceding)
    from tbl_mois

    qui me renverra :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    0  10  0
    1  11  10
    2  9   11
    4  6   0
    5  15  6
    Or, je voudrais également sortir la ligne 3 :
    Ce que je ne sais pas faire...

    Merci d'avance pour toute idée !

    Adrien

  2. #2
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    C'est pas très beau, mais tu peux tenter un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select CD_MOIS, CA, first_value(CA) over (partition by site order by aaaamm range between 1 preceding and 1 preceding)
    from ( select *  from tbl_mois UNION select A as site, 3 as cd_mois, 0 as CA FROM dual)

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Y'a pas beaucoup de moyens pour créer une ligne qui n'existe pas.

    Quels sont les cd_mois qui peuvent exister ? Est ce que c'est fixe (genre 1 à 12), ou pas. (Vu le 0 j'ai peur )

    PS : Tu peux utiliser le lag plutôt que le first value avec les range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CD_MOIS, CA, lag(CA,1) OVER (PARTITION BY site ORDER BY aaaamm)
    FROM tbl_mois

  4. #4
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Bonjour,


    Si tu es en 10g, regarde du cote de la clause SQL Model, tu manipules les données comme dans un tableur, c'est faisable, mais je maitrise pas la syntaxe, elle est assez monstrueuse...


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  5. #5
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 12
    Par défaut
    En fait le cd_mois que j'utilise c'est le code de mois précédent. c'est 0 pour le mois en cours, 1 pour le mois précédent, 2 pour il y a 2 mois...
    Il peut y avoir un mois ou je n'ai pas de vente, donc la ligne n'existe pas (3 dans mon exemple)

    Je peux m'arranger en faisant un produit cartésien avec une table qui contient, un peu comme a proposé pacmann je pense.
    Je vais aussi jeter un coup d'oeil aux SQL model clause, je ne connais pas du tout.

    Je vais étudier ca.

    Merci en tout cas ! je vous tiens au courant

    Adrien

Discussions similaires

  1. Comment afficher la ligne "opération" dans une req
    Par Aurèl90 dans le forum Access
    Réponses: 3
    Dernier message: 03/04/2017, 17h17
  2. [AC-2003] Ligne manquante dans requête sélection
    Par Lanig22 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 31/07/2011, 11h51
  3. Réponses: 7
    Dernier message: 23/04/2006, 23h07
  4. [VBA-E] Afficher lignes masquées dans une feuille protégée
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/12/2005, 18h59
  5. Réponses: 1
    Dernier message: 29/11/2005, 00h37

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