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

Designer Discussion :

Problème Tri sur date avec count


Sujet :

Designer

  1. #1
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut Problème Tri sur date avec count
    Bonjour à tous.

    Je suis nouveau sur Business objects. J'ai un petit problème avec les tris sur dates.

    Considérons par exemple que j'ai un magasin et j'aimerais sortir un rapport contenant le nombre de ventes par jour.
    Je l'obtiens avec BO en créant une dimension Date vente de type alphanumérique (dd/mm/yyyy) et un indicateur Nombre de ventes (count(id_vente)).
    Seulement quand je fais un tri sur la colonne Date vente dans BO, j'obtiens un tri sur chaîne pas sur date, alors j'ai essayé de modifier le type de la colonne dans le format de cellule, mais ça n'a pas marché.
    Ensuite si dans le designer je définis le type de la dimension Date vente en tant que date, j'obtiens toujours 1 avec count et c'est normal parce que la requête est group by date vente.

    Pourriez-vous me montrer des astuces pour contourner ce genre de problème. J'utilise BO 5 et Oracle 9. Merci d'avance.
    " ... On naît, on vit, on meurt, mais exister est un honneur ... "

  2. #2
    Rédacteur
    Avatar de TomDuBouchon
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2009
    Messages
    3 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 343
    Points : 5 848
    Points
    5 848
    Par défaut
    Salut,

    Je ne comprends pas bien ton problème...

    Si tu as une dimension DateVente de type date et un indicateur Ventes de type numérique défini par une formule d'agrégation Count() provenant tous deux de Table1 par exemple, la requête générée devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table1.DateVente, count(Table1.id_vente)
    FROM Table1
    GROUP BY Table1.DateVente
    et le résultat à l'écran devrait être :
    DateVente Ventes
    01/01/2009 52
    02/01/2009 34
    etc...
    Je ne comprends pas pourquoi ton GROUP BY DateVente devrait te ramener des "1".

    Sinon, si tu dois absolument garder ta date en alphanumérique dans le designer, tu peux toujours appliquer une fonction directement dans ton rapport sur cet objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =EnDate(<DateVente>,"jj/mm/aaaa")
    Tu pourras donc ensuite trier par date sans souci...

    Sinon, vérifie que dans Oracle ta date est bien une date. S'il s'agit d'un varchar ou autre il va falloir appliquer une fonction sur ton objet dans le designer pour que dans l'univers ton objet soit bien une date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_date(Table1.DateVente,'dd/mm/yyyy')
    Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
    Un message vous a aidé ? Votez en cliquant sur
    Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton

  3. #3
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut
    Citation Envoyé par TomDuBouchon Voir le message
    Je ne comprends pas pourquoi ton GROUP BY DateVente devrait te ramener des "1".
    En fait le type Date sur oracle n'est pas comme celui de Mysql. Une exemple :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    SQL> create table test_date(id number, col_date date);
     
    Table created
     
    SQL> insert into test_date(id, col_date) values (1, sysdate);
     
    1 row inserted
     
    SQL> insert into test_date(id, col_date) values (2, sysdate);
     
    1 row inserted
     
    SQL> insert into test_date(id, col_date) values (3, sysdate);
     
    1 row inserted
     
    SQL> insert into test_date(id, col_date) values (4, sysdate);
     
    1 row inserted
     
    SQL> commit;
     
    Commit complete
     
    SQL> select * from test_date;
     
            ID COL_DATE
    ---------- -----------
             1 15/09/2009
             2 15/09/2009
             3 15/09/2009
             4 15/09/2009
     
    SQL> select to_char(COL_DATE, 'dd/mm/yyyy hh24:mi:ss') from test_date;
     
    TO_CHAR(COL_DATE,'DD/MM/YYYYHH
    ------------------------------
    15/09/2009 15:21:08
    15/09/2009 15:21:14
    15/09/2009 15:21:20
    15/09/2009 15:21:31
     
    SQL> select count(*), col_date from test_date group by col_date;
     
      COUNT(*) COL_DATE
    ---------- -----------
             1 15/09/2009
             1 15/09/2009
             1 15/09/2009
             1 15/09/2009
     
    SQL> select count(*), to_char(col_date, 'dd/mm/yyyy') from test_date group by to_char(col_date, 'dd/mm/yyyy');
     
      COUNT(*) TO_CHAR(COL_DATE,'DD/MM/YYYY')
    ---------- ------------------------------
             4 15/09/2009
     
    SQL>
    J'espère que cette exemple pourrait un peu illustrer ma question.
    " ... On naît, on vit, on meurt, mais exister est un honneur ... "

Discussions similaires

  1. Problème de tri sur date avec ADO - ACCESS
    Par lorenzodelphi dans le forum Bases de données
    Réponses: 1
    Dernier message: 13/09/2013, 08h28
  2. [MySQL 5] Double tri sur date et time
    Par titoine1978 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/06/2006, 19h46
  3. Problème de filtre sur date avec ADOQuery
    Par lingli dans le forum Bases de données
    Réponses: 12
    Dernier message: 30/04/2006, 15h40
  4. requete avec tri sur date erronée
    Par olivll dans le forum Access
    Réponses: 11
    Dernier message: 20/10/2005, 15h45
  5. [Interbase 6] tri sur date et SQL
    Par Yogy dans le forum InterBase
    Réponses: 6
    Dernier message: 21/06/2005, 09h15

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