Bonjour,

Je connais le SQL/ PL SQL mais pas du tout le SQL Dynamique, je rencontre un cas de figure aujourd'hui qui me pousse à m'y intéresser de plus prêt et pour lequel j'aurais souhaité avec quelques conseils.

Je dispose aujourd'hui d'un emsemble de tables ayant pour clé un numéro de fiche, j'aimerais pouvoir créer des vues agregrées au niveau du numéro de groupe c'est à dire à un niveau supérieur. Une fiche ne peut être rattaché qu'à un groupe mais un groupe peut contenir plusieurs fiches.

Voici aujourd'hui comment j'ai commencé à élaborer ma réflexion,

J'ai créer une première table de paramétrage qui reprend le nom de la table concernée/ le champ de la table concernée et l'action d'agrégation à réaliser :

Nom de la table source Nom du champ Action à faire dessus

FICHE Date d'entree en vigueur Max
FICHE Nb de contrôle Count
FICHE Entité de rattachement Prendre en priorité l'entite de rattachement de la table FICHE et par défaut table CLIENT
CLIENT Nom du client Ne pas agreger
CLIENT Cotation Interne Max
CLIENT Revenu Avg
CLIENT Adresse Ne pas agreger
CLIENT Entité de rattachement Prendre en priorité l'entite de rattachement de la table FICHE et par défaut table CLIENT

J'ai une seconde table de paramétrage qui contient l'ensemble des tables de mon modèle.


Nom de la table

FICHE
CLIENT


Ce que je souhaite c'est créer des vues agrégées par groupe pour l'ensemble des tables de mon modèle. Il est certain que j'aurais pu faire un select groupe , max (xxx), min(xxx) from table group by groupe.... Mais aujourd'hui j'ai beaucoup de table dans mon modèle donc je me dis qu'il est peut être possible de générer cela automatiquement.

Par exemple en considérant que dans ma table FICHE je dispose des informations suivantes , dont la clé est le numéro de fiche,

N° fiche GROUPE Date d'entree en vigueur Nb Contrôle Entite de rattachement

1 999 01/01/14 1 NIMES
2 0 01/04/13 0
3 999 01/07/14 7 NIMES


Je souhaite créer une vue agrégée de FICHE au niveau groupe du type

GROUPE Date d'entree en vigueur Nb Contrôle Entite de rattachement

999 01/07/14 8 NIMES
0 01/04/13 0 MARSEILLE


Et ensuite que la même action se fasse au niveau de ma table client, c'est à dire qu'en supposant que je dispose des informations suivantes dans ma table CLIENT, donc la clef est la aussi le numéro de fiche

N° fiche Nom du client Revenu déclaré Adressse Cotation Interne Entite de rattachement
1 HENRI 500 Rue du moulin 10 TOULOUSE
2 DUPONT 200 Rue des loriers 7 MARSEILLE
3 HENRI 1000 Rue du moulin 20 TOULOUSE


J'aimerais dynamiquement créer la vue client agrégée au niveau groupe

GROUPE Revenu déclaré Adressse Cotation Interne Nom du client Entite de rattachement

999 750 Rue des loriers 20 HENRI NIMES
0 200 Rue du moulin 7 DUPONT MARSEILLE



J'ai mis volontairement ce jeu de données fictives pour exprimer au mieux ce que je cherche à faire.

Comme j'ai beaucoup de tables dans mon MCD, l'approche du dynamique SQL me semble intéressante c'est la raison pour laquelle je recherche des informations pour la mettre en oeuvre


Mes questions sont donc les suivantes :

§Comment gère t'on dynamiquement l'appel à deux tables de paramétrage ?
§Comment faire pour créer automatiquement l'ensemble des vues agrégées à partir de la liste des tables de mon MCD ?
§Comment faire si un même champ se trouve dans deux tables de mon modèle et qu'on souhaite dans ce cas la priorisé l'information d'une table plutot que d'une autre au moment de l'agrégation . Par exemple si mon champ entité de rattachement se trouve dans la table FICHE et dans la table CLIENT, mais contient deux informations différentes , je veux pouvoir priorité l'information à conserver pour mon champ final. J'imagine faire un max d'un décode max (TABLE FICHE entite_rattachement non null alors 1 sinon 0, TABLE CLIENT entite_rattachement non null alors 1 sinon 0) mais j'aimerais savoir à quel niveau cela se formalise ?

Merci par avance pour votre aide, n'hésitez pas à me transmettre tous modèles de procédures PL SQL qui réaliseraient ce type d'action