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 :

Afficher des row vides dans une query


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Afficher des row vides dans une query
    Bonjour à tous,

    Je souhaiterai compter le nombre de ligne dans une table selon une date et une heure et afficher le résultat en incluant les heures ou il n'y a aucune transaction.

    Voici un 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
     
    WITH CALENDAR_MARCH AS
    (
    SELECT '10/03' AS DAYS, '12H' AS HOURS    FROM DUAL UNION ALL
    SELECT '10/03'        , '12H'             FROM DUAL UNION ALL
    SELECT '10/03'        , '13H'             FROM DUAL UNION ALL
    SELECT '10/03'        , '14H'             FROM DUAL UNION ALL
    SELECT '10/03'        , '14H'             FROM DUAL
    ), CT AS 
    (
    select DAYS, HOURS, ROW_NUMBER() over (partition by DAYS, HOURS order by DAYS ASC, HOURS ASC) nb_transactions from CALENDAR_MARCH
    )
    select DAYS, HOURS, count(nb_transactions) from CT group by DAYS, HOURS order by DAYS ASC, HOURS ASC;
     
    le résultat me donne :
     
    DAYS	HOURS	COUNT(NB_TRANSACTIONS)
     
    10/03	11H	1
    10/03	12H	1
    10/03	13H	1
    10/03	14H	2
    Je cherche a obtenir un résultat du type :

    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
     
    DAYS	HOURS	COUNT(NB_TRANSACTIONS)
     
    10/03	00H	0
    10/03	01H	0
    10/03	02H	0
    10/03	03H	0
    10/03	04H	0
    10/03	05H	0
    ..etc
    10/03	11H	1
    10/03	12H	1
    10/03	13H	1
    10/03	14H	2
    ..etc
    Des idées?
    J'ai cherché du coté du over partition by , des cases, mais je ne trouve rien qui me permettent d'obtenir un affichage souhaité...

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Salut,

    Essaie ce code.

    Cordialement salim.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT *
      FROM calendar_march;
     
    DAYS  HOU
    ----- ---
    10/03 11H
    10/03 12H
    10/03 13H
    10/03 14H
    10/03 14H
     
     
    5 rows selected.
    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
     
    WITH t AS
         (SELECT   days, hours, lvl
              FROM calendar_march,
                   (SELECT     LEVEL lvl
                          FROM DUAL
                    CONNECT BY LEVEL <= 24)
          ORDER BY days, hours, lvl)
    SELECT   days, TO_CHAR (lvl - 1, 'fm00') || 'H' hours,
             SUM (CASE
                     WHEN TO_CHAR (lvl - 1, 'fm00') || 'H' = hours
                        THEN 1
                     ELSE 0
                  END) NB_TRANSACTIONS
        FROM t
    GROUP BY days, TO_CHAR (lvl - 1, 'fm00')
    ORDER BY days,hours;
     
    DAYS  HOUR NB_TRANSACTIONS
    ----- ---- ---------------
    10/03 00H                0
    10/03 01H                0
    10/03 02H                0
    10/03 03H                0
    10/03 04H                0
    10/03 05H                0
    10/03 06H                0
    10/03 07H                0
    10/03 08H                0
    10/03 09H                0
    10/03 10H                0
    10/03 11H                1
    10/03 12H                1
    10/03 13H                1
    10/03 14H                2
    10/03 15H                0
    10/03 16H                0
    10/03 17H                0
    10/03 18H                0
    10/03 19H                0
    10/03 20H                0
     
    DAYS  HOUR NB_TRANSACTIONS
    ----- ---- ---------------
    10/03 21H                0
    10/03 22H                0
    10/03 23H                0
     
     
    24 rows selected.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Super merci , c'est exactement ce que je souhaitais.

    Je vais essayer le pivot pour avoir ces résultats de façon horizontal maintenant


    DAYS Nb_Transac_00H Nb_Transac_01H Nb_Transac_02H ....
    10/03 0 0 0
    11/03 0 1 0

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

Discussions similaires

  1. Afficher les mois vides dans une requête
    Par Nessie37 dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 04/12/2007, 14h35
  2. Réponses: 4
    Dernier message: 01/06/2007, 19h15
  3. Afficher des éléments HTML dans une WindowsForm
    Par flagadda dans le forum Windows Forms
    Réponses: 3
    Dernier message: 16/04/2007, 17h31
  4. Afficher des balises HTML dans une chaine javascript
    Par lapaupiette dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/03/2007, 10h19
  5. afficher des etats ireports dans une appli jsf
    Par ouedmouss dans le forum Documents
    Réponses: 1
    Dernier message: 09/02/2007, 07h05

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