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

Oracle Discussion :

requete oracle pour obtenir des montant sur 12 mois glissant


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut requete oracle pour obtenir des montant sur 12 mois glissant
    Bonjour,

    je suis novice en ORACLE, plus habitué à du SQL. Dans mon projet, j'ai besoin d'obtenir la somme des montant versés sur 12 mois glissant, j'ai une table montantverse qui a pour champ le montantverse, le mois et l'année.

    je souhaiterais que ma requête retourne la somme des montant versés sur les 12 mois précédent le mois et l'année que je passerais en paramètre.

    par exemple, je souhaite obtenir la somme des montants versés précédent mars 2010, j'envoie en paramètre le mois 03 et l'année 2010, ma requête doit me retourner la somme des montant versés depuis mars 2009 jusque mars 2010.

    je suis bien bloqué par cette requête car je n'arrive pas à comprendre quelle fontion utiliser, ni comment les utiliser.

    en gros j'en suis à ce point là dan sma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select sum(montantverse), mois, annee from t_vt_montantverse 
    where  ???
    Cordialement

  2. #2
    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
    Une mauvaise modélisation complexifie toujours les solutions !
    Quels sont les types des données mois et annee ?

  3. #3
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut
    ceux sont des chaîne de caractères, le problème c'est que je ne peux pas changer la base de donnée, je n'ai pas la main dessus, est-il possible de créer un champ date avec ces 2 chaînes, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    to_date(to_date(mois, 'MM'),to_date(annee,'YYYY'))

  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
    Oui, c'est pour cette raison que j'avais besoin de connaître le type de ces données. En chaîne de caractère, il suffit de concaténer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select to_date('2010' || '03', 'yyyymm') as dt
      from dual;
    Donc pour votre requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      SELECT annee, mois, sum(montantverse)
        FROM t_vt_montantverse 
       WHERE to_date(annee || mois, 'yyyymm') between -- je vous laisse chercher un peu !
    GROUP BY annee, mois

  5. #5
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut
    je me demander comment concaténer dans oracle. Merci bien.

    j'ai donc fait cette requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       SELECT mois, annee, sum(montantverse)
        FROM t_vt_montantverse 
       WHERE to_date(annee || mois, 'yyyymm')  BETWEEN (add_months(to_date(annee || mois, 'yyyymm'), -12)+1) and to_date(annee || mois, 'yyyymm')
       GROUP BY annee, mois
    mais j'ai l'impression que les montant versés ne s'additionnent pas sur les 12 mois précédent

  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
    Non effectivement, il faut utiliser vos paramètres dans le BETWEEN !
    Actuellement vous utilisez vos colonnes, si je condense un peu c'est comme si vous écriviez where annee = annee.
    Cette condition étant toujours vérifiée c'est comme s'il n'y avait pas de filtre !

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

Discussions similaires

  1. Logiciel pour obtenir des statistiques sur un projet
    Par Invité dans le forum Qualité
    Réponses: 1
    Dernier message: 06/12/2011, 15h18
  2. Réponses: 1
    Dernier message: 30/01/2008, 16h42
  3. Réponses: 21
    Dernier message: 01/08/2006, 20h44
  4. Obtenir des infos sur une page web en ligne
    Par Logan_Cale dans le forum Web & réseau
    Réponses: 1
    Dernier message: 20/08/2005, 15h36
  5. quel langage pour créer des "applications" sur 1 s
    Par jaribu dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 30/07/2003, 14h06

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