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 fonction DECODE


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Points : 23
    Points
    23
    Par défaut Problème fonction DECODE
    Bonjour,

    Voila depuis quelques temps je me prend la tête avec une requête qui me prend le chou !!!

    Voila mon problème.

    Je dois crée une requête qui me permet de definir une date à travers une valeur, qui ensuite me permettra de calculer un Cumul CA (Chiffre d'affaire).
    Donc voila j'ai réussi à détérminer avec la fonction DECODE à quelle période je dois commencer pour faire mon cumul. La fonction est la suivante

    Decode(To_Char(Date,'mm'),
    '10',To_Char(Date,'yyyy'),
    '11',To_Char(Date,'yyyy'),
    '12',To_Char(Date,'yyyy'),
    To_Char(Add_Months(Date,-12),'yyyy'))

    En fonction de la date rentrée il me détermine à quand je dois commencer.
    Mais le problème et que je ne peut pas faire un cumul par la suite avec ce résultat. car je l'utilise dans la clause select de m'a requête

    Je travaille sous oracle
    Voila j'éspére que je suis un peu clair dans mon explication merci

  2. #2
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 134
    Points : 84
    Points
    84
    Par défaut
    Bonjour zaza,

    Pourrais-tu être un peu plus clair stp ?

    je pense en fait à ce style là, mais je ne sais pas si cela correspond à ce que tu veux ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select sum ()from <nom_table>
    where <date_de la table>  >  select Decode(To_Char(Date,'mm'), 
    '10',To_Char(Date,'yyyy'), 
    '11',To_Char(Date,'yyyy'), 
    '12',To_Char(Date,'yyyy'), 
    To_Char(Add_Months(Date,-12),'yyyy')) from <nom_table>;

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Et bien merci jokos2000 de ta réponse.

    Pour être plus clair la requête me ramenne bien quelques choses.
    Mais en faite, le systéme que je veux mettre en place me permettra
    d'automatiser le calcul. Car celui-çi se base sur l'exercice de l'entreprise.

    Ensuite, à travers ce résultat je voudrais avoir une automatisation
    qui quand t'on donne une date,
    elle nous calcul automatiquement depuis le debut de l'exercice qui commence au moi d'Octobre.

  4. #4
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 134
    Points : 84
    Points
    84
    Par défaut
    Tu dois donc créer une procedure avec la date en paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE OR REPLACE PROCEDURE...
    Dans la procédure tu calcules la date que tu mets dans une variable avec ton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Decode(To_Char(Date,'mm'), 
    '10',To_Char(Date,'yyyy'), 
    '11',To_Char(Date,'yyyy'), 
    '12',To_Char(Date,'yyyy'), 
    To_Char(Add_Months(Date,-12),'yyyy')) FROM <nom_table>;
    Puis, toujours dans la procédure, tu fais ta requête de cumul avec la valeur de ton paramètre.

    Je suis clair ?

  5. #5
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Si j'ai bien compris, tes exercices commencent en Octobre (mois 10)
    Alors pourquoi ne pas faire tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE OR REPLACE FUNCTION annee_exercice (p_date DATE)
       RETURN NUMBER
    AS
    BEGIN
       RETURN TO_NUMBER (TO_CHAR (ADD_MONTHS (p_date, -9), 'yyyy'));
    END;
    ensuite tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select sum(ma_table.mon_ca) 
    from ma_table 
    where annee_exercice(ma_table.ma_date)=2008
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select annee_exercice(ma_table.ma_date),sum(ma_table.mon_ca) 
    from ma_table 
    group by annee_exercice(ma_table.ma_date)

Discussions similaires

  1. Problème fonction decode()
    Par chti_juanito dans le forum Administration
    Réponses: 11
    Dernier message: 15/02/2006, 20h00
  2. Problème fonction SDL
    Par seeme dans le forum SDL
    Réponses: 2
    Dernier message: 06/11/2005, 20h22
  3. Problème fonction PL/SQL
    Par SSJ17Vegeta dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/10/2005, 21h14
  4. Problème fonction et trigger sous 7.2
    Par anoukhan dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/06/2005, 22h53
  5. Réponses: 2
    Dernier message: 20/08/2004, 17h10

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