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

DB2 Discussion :

Nombre d'enreg jour par jour


Sujet :

DB2

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 38
    Points : 31
    Points
    31
    Par défaut Nombre d'enreg jour par jour
    Bonjour à tous,

    j'ai un petit soucis : j'ai besoin de compter des enregistrement par rapport à une date. En fait au final il me faut la liste du nombre d'enregistrement par jour entre une date passé et aujourd'hui. Je pensais faire un between date_passé and current_date avec un group by sur la date, seulement il n'y a pas forcement d'enregistrement tous les jours et j'ai besoin d'avoir un nombre par jour même si ça dois être zéro.

    Sauriez-vous s’il existe un calendrier dans DB2?
    Ou bien est-il possible de créer une table virtuelle avec un incrément automatique contenant la liste des dates jour par jour ?

    Merci d'avance pour vos réponses.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Sauriez-vous s’il existe un calendrier dans DB2?
    Je pense qu'il n'en existe pas, mais tu peux t'en faire un facilement avec une procédure stockée dans ce goût-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Drop Procedure AddDays;
    Create Procedure AddDays  ( In DateDepart Date )
    Language SQL
    Begin
       Declare LastDate Date;
       Create table MyTable (MyDate Date not Null);
       Set LastDate = DateDepart - 1 Days;
       Insert_Loop:
        Loop
         Set LastDate = LastDate + 1 Days;
         Insert Into MyTable Values( LastDate );
         If LastDate = DateDepart + 30 Days  Then
           Leave Insert_Loop;
         End If;
       End Loop Insert_Loop;
    End
    Tu l'appelles ensuite avec un simple CALL AddDays('2009-01-01') où 01/01/2008 représente par exemple la date de départ. La date doit être indiquée au format ISO.

    Dans cette procédure, je crée une table exemple (MyTable) qui recense tous les jours calendaires depuis la date de départ passée en paramètre. J'arrête la création de cette table 30 jours plus tard. A toi de changer cette limite en la paramétrant, en l'insérant en dur dans la procédure, etc.

    Ensuite, tout devient en effet plus facile par LEFT JOIN de cette table calendrier avec ta table et si la date de ta table est nulle, la mettre au 01/01/0001 par ex. avec la fonction COALESCE().

Discussions similaires

  1. Nombre de messages par jour par utilisateur ?
    Par fraginfo dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/04/2013, 11h09
  2. [Conception] Un click par Jour par IP
    Par AngelFire dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/12/2007, 18h43
  3. [MySQL] N'afficher la page que une seul fois par jour par ip
    Par Nutaak dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/12/2007, 17h38
  4. VBA regroupement date selon choix option (par jour, par mois)
    Par IndyJones dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/12/2006, 20h06
  5. Compter le nombre d'enreg retournés par un DBExtract
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 02/11/2004, 14h15

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