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

Langage SQL Discussion :

Affichage mensuel d'une valeur valide a date


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 72
    Points : 46
    Points
    46
    Par défaut Affichage mensuel d'une valeur valide a date
    Bonjour,

    J'ai une table d'objectif pour un indicateur donné. Exemple :

    IdObjectif date_debut valeur
    obj1 01/01/2008 120.000
    obj2 01/06/2008 125.000
    obj3 01/09/2008 90.000

    Je voudrais pourvoir obtenir un jeu de donné du style (analyse mensuel)

    Anne mois valeurObj
    2008 01 120.000
    2008 02 120.000
    2008 03 120.000
    2008 04 120.000
    2008 05 120.000
    2008 06 125.000
    2008 07 125.000
    2008 08 125.000
    2008 09 90.000
    2008 10 90.000
    ...
    2009 01 90.000
    ...
    2009 09 90.000


    Comment faire cela facilement dans une requete ?

    Merci

    Franck

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Si vous voulez afficher chaque jour, même s'il n'y a pas d'objectif en face, il vous faut une table de calendrier et faire une jointure dessus.
    Voir au sujet du traitement des dates l'article de SQLPro.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Tu cherches donc à créer des informations que tu n'as pas...
    SQL a un peu de mal avec ce genre de démarche
    Donc, dans un premier temps, il va te falloir une table de type calendrier qui te liste tous les mois, de manière à avoir une ligne pour chaque mois que tu n'as pas dans tes données.

    Reviens vers nous avec la requête que tu auras construite, nous t'aiderons à la mettre au point.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

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

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

    Vous êtes un peu trop stricts les gars, et pas très imaginatifs !

    C'est quoi ton SGBD ?

    Ce truc là, je l'ai vu quelque part...

    Ici :

    http://www.waldar.org/blog/200908/ts...-recursive-cte

    Et si tu comprends pas, Waldar se fera un plaisir de t'expliquer, je pense.

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Sauf qu'en terme de performances, c'est particulièrement catastrophique de générer des données à la volée par récursivité !!!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Sauf qu'en terme de performances, c'est particulièrement catastrophique de générer des données à la volée par récursivité !!!!
    Oui et non, c'est vraiment une question de volumétrie.
    Un calendrier reste une table de faible volumétrie (200 ans = 73050 lignes).
    Sous Oracle sur une bonne machine, ça prend 16 ms.
    Sous SQL Server, avec la limite de récursivité à 32767 c'est un peu plus long mais ça reste quand même très rapide.

    Par contre je ne reviens pas sur le fait qu'une table calendrier est absolument nécessaire, c'est la meilleure solution.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    16 ms. est pour moi un temps totalement rédhibitoire pour une requête simple. Imagine cette requête 10 000 fois pas jour => 160 secondes => 2 minutes et 40" par jours et sur 5 ans : 30 heures de process pour pas grand chose !

    Cela s'appelle l'optimisation !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    C'est exactement le même temps qu'un select sur la table calendrier (les 16 ms incluent le temps du message réseau).

    Mais je reste d'accord sur le fond, ce genre de requête sert pour dépanner ou prouver des choses sur un environnement d'intégration (comme l'intérêt d'une table calendrier par exemple), certainement pas pour être executé plusieurs milliers de fois par jour en prod.

Discussions similaires

  1. [Vxi3] Afficher une valeur dont la date est max
    Par nannou86 dans le forum Deski
    Réponses: 1
    Dernier message: 27/08/2010, 14h47
  2. Détecter si une cellule a une valeur au format date
    Par thierry_b dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/06/2009, 23h52
  3. Réponses: 28
    Dernier message: 21/07/2008, 11h32
  4. Affichage images suivant une valeur
    Par Alexandr dans le forum IHM
    Réponses: 1
    Dernier message: 18/10/2006, 10h55
  5. Affichage dynamique d'une valeur calculée
    Par harley dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/06/2006, 09h20

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