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

Reports Oracle Discussion :

report matriciel avec trous


Sujet :

Reports Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Par défaut report matriciel avec trous
    Bonjour

    je reformule

    ma question de façon plus generale:

    soit des ensemble E avec des sous ensemble SE dont le nombre est variable selon les ensembles.

    ces sous ensembles SE ont des defaillances...

    je veux faire un tableau matriciel global avec les ensembles E en lignes et les sous ensembles SE en colonnes

    les comptage de defaillances des sous ensembles N sont dans la matrice.

    certains sous ensembles existent mais ont des valeurs N nulles

    mais certains sous ensembles n'existent pas pour tel ou tel ensemble.
    et je voudrais pouvoir les discriminer par formatage


    comment faire ?


    EX CI DESSOUS X = inexistant
    SE1 SE2 SE3 SE4 SE5 SE6
    E1 0 1 0 5 X X
    E2 4 2 1 1 1 X
    E3 0 0 X X 5 2
    E4 1 0 4 X 4 5
    E5 2 X X 0 1 0

  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
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    je voudrais pouvoir les discriminer par formatage
    ???

    Peux-tu nous donner plus de détail?

    Si j'ai bien compris tu veux mettre 0 dans les cases null

    Peux-tu poster ta requête ?


    PS: j'ai vu un cas semblable

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Par défaut
    Bonjour

    non 0 signifie 0 defauts pour le poste existant

    par contre 'mettre une couleur de remplissage' signifie que la combinaison ligne colonne n'existe pas
    car le nombre de P n'est pas constant pour chaque L

    explications:
    les postes sont codés LxxPxx dans les tables postes et defauts avec jointure 1 à plusieurs sur poste_code=def_poste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select substr(poste_code,2,2) L,substr(poste_code,5,2)P
    from postes
    pour construire le tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select def_poste,count(def_code) from defauts
    group by def_poste
    pour remplir la matrice

    pour l'instant je code en dur dans le trigger de format les code_postes à griser (nombre malgré tout peu evolutif) mais je voulais savoir si on pouvait automatiser cette action

  4. #4
    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
    Par défaut
    Salut,

    C'est pas encore clair, pour un rapport matriciel t'a besoin d'une seule requete qui contient les lignes, les colonnes et les cellules.

    qu'elle sont tes lignes,colonnes et cellules ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT substr(poste_code,2,2) L,substr(poste_code,5,2)P,count(def_code)
    FROM postes,defauts
    where poste_code = def_poste(+)
    GROUP BY substr(poste_code,2,2),substr(poste_code,5,2)
    les lignes sont L et les colonnes P

    toutes les L n'ont pas autant de P

    je veux mettre en evidence les cellules count(def_code) ou P n'existe pas pour le L donné

  6. #6
    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
    Par défaut
    salut,

    Qu'elle est ta version d'oracle ?

    Si tu as la 9i tu peux essayer ça
    (-1) pour les cellules : P n'existe pas ou L n'existe pas

    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 DISTINCT postes.l, postes.p,
                    DECODE (def_code,
                            NULL, -1,
                            COUNT (def_code) OVER (PARTITION BY def_poste)
                           ) cpt
               FROM (SELECT DISTINCT tl.l, tp.p
                                FROM (SELECT SUBSTR (poste_code, 2, 2) l
                                        FROM postes) tl,
                                     (SELECT SUBSTR (poste_code, 5, 2) p
                                        FROM postes) tp) postes,
                    defauts
              WHERE 'L' || postes.l || 'P' || postes.p = def_poste(+)
           ORDER BY postes.l, postes.p
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    (SELECT DISTINCT tl.l, tp.p
                                FROM (SELECT SUBSTR (poste_code, 2, 2) l
                                        FROM postes) tl,
                                     (SELECT SUBSTR (poste_code, 5, 2) p
                                        FROM postes) tp)
    Cette sous-requête (produit cartésien entre les L et P) les te donne toutes les combinaisons possibles entre L et P

    Exemple si j'ai dans ma table postes les enregistrement suivants :
    L01P01
    L01P02
    L02P01
    L02P02
    L02P03

    Résultat de la sous-requête :

    L P
    01 01
    01 02
    01 03
    02 01
    02 02
    02 03

    Dans ton rapport
    Tu mets une couleur de remplissage grise pour les cellules = -1

    Résultat de la requête
    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
     
    SQL> select * from postes ;
     
    POSTE_
    ------
    L01P01
    L01P02
    L02P01
    L02P02
    L02P03
     
    SQL> select * from defauts;
     
    DEF_PO   DEF_CODE
    ------ ----------
    L02P03          0
    L01P02          0
    L02P03          1
    L01P02          1
    L01P02          0
     
    SQL> SELECT DISTINCT postes.l, postes.p,
      2                  DECODE (def_code,
      3                          NULL, -1,
      4                          COUNT (def_code) OVER (PARTITION BY def_poste)
      5                         ) cpt
      6             FROM (SELECT DISTINCT tl.l, tp.p
      7                              FROM (SELECT SUBSTR (poste_code, 2, 2) l
      8                                      FROM postes) tl,
      9                                   (SELECT SUBSTR (poste_code, 5, 2) p
     10                                      FROM postes) tp) postes,
     11                  defauts
     12            WHERE 'L' || postes.l || 'P' || postes.p = def_poste(+)
     13         ORDER BY postes.l, postes.p
     14  ;
     
    L      P             CPT
    ------ ------ ----------
    01     01             -1
    01     02              3
    01     03             -1
    02     01             -1
    02     02             -1
    02     03              2
     
    6 ligne(s) sélectionnée(s).
     
    SQL>

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

Discussions similaires

  1. [Crystal Report] Problème avec la mise en forme à colonnes multiples
    Par SamRay1024 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 14/10/2010, 15h19
  2. report matriciel avec cellules impossibles grisées
    Par gg2vig dans le forum Designer
    Réponses: 0
    Dernier message: 14/12/2007, 11h19
  3. [Reports]etat avec report 6i
    Par nadia lydia dans le forum Oracle
    Réponses: 3
    Dernier message: 19/12/2006, 17h07
  4. [CRYSTAL REPORT ] Problème avec sous état
    Par olbi dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 16/05/2006, 15h52
  5. Quick Report: Rupture avec SousDetail?
    Par AOliv dans le forum Bases de données
    Réponses: 4
    Dernier message: 11/10/2005, 11h00

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