traitement d'insertion récursif
Bonjour,
voilà je suis confronté à une problématique que je n'arrive pas à résoudre et que vous expose :
j'ai 6 tables (TI_EDI_CPT_DIR_AG_COL1,TI_EDI_CPT_DIR_AG_COL2,..... à TI_EDI_CPT_DIR_AG_COL6) en source qui ont la même structure :
Code:
1 2 3 4 5 6 7 8 9 10
| COL1 VARCHAR2(255 BYTE)
COL2 VARCHAR2(255 BYTE)
COL3 VARCHAR2(255 BYTE)
LB_TIE VARCHAR2(255 BYTE)
LB_D_EN_REL VARCHAR2(255 BYTE)
LB_ACT VARCHAR2(255 BYTE)
LB_MTF_SEL VARCHAR2(255 BYTE)
LB_D_ETRN_EPA VARCHAR2(255 BYTE)
LB_D_MAJ_ETRN_EPA VARCHAR2(255 BYTE)
LB_RESU_ANA VARCHAR2(255 BYTE) |
Je dois insérer/mixer les données de mes 6 tables source vers une table cible dans un certain ordre :
1/ une ligne vide (caractérisée par le code 2 (champ "Col1").
2/ une ligne de libellés (caractérisée par le code 1 (champ "Col1")
3/ une ligne vide (caractérisée par le code 2 (champ "Col1")
4/ une ligne comportant le nom de l'agent (caractérisée par le code 3 (champ "Col1")
5/ une ligne vide (caractérisée par le code 2 (champ "Col1").
5/ une ligne de libellés (caractérisée par le code 4 (champ "Col1")
6/ une ou plusieurs lignes de données (caractérisée par le code 5 (champ "Col1"). S'il y a plusieurs lignes, la 1ere ligne commence par le code 5, les suivantes par le code 6.
7/ une ligne de données (caractérisée par le code 6 (champ "Col1")
8/ une ligne vide (caractérisée par le code 2 (champ "Col1")
Voici le contenu de mes tables source :
1/
Code:
1 2 3 4 5 6 7
| TI_EDI_CPT_DIR_AG_COL1 (correspond à une ligne de libellés, COl1=1)
COl1 Col2 Col3 LB_TIE LB_D_EN_REL LB_ACT LB_MTF_SEL LB_D_ETRN_EPA LB_D_MAJ_ETRN_EPA LB_RESU_ANA
1 104682240 CONTROLE COMPTES A EXAMINER NOV2010
1 104682245 CONTROLE COMPTES A EXAMINER NOV2010
1 104682246 CONTROLE COMPTES A EXAMINER NOV2010
1 104682247 CONTROLE COMPTES A EXAMINER NOV2010
1 300762019 CONTROLE COMPTES A EXAMINER NOV2010 |
2/
Code:
1 2 3 4 5 6 7
| TI_EDI_CPT_DIR_AG_COL2 (correspond à une ligne vide, COl1=2)
COl1 Col2 Col3 LB_TIE LB_D_EN_REL LB_ACT LB_MTF_SEL LB_D_ETRN_EPA LB_D_MAJ_ETRN_EPA LB_RESU_ANA
2 104682240
2 104682245
2 104682246
2 104682247
2 300762019 |
3/
Code:
1 2 3 4 5 6 7
| TI_EDI_CPT_DIR_AG_COL3 (correspond au nom de l'affectataire (=agent), COl1=3 avec son ID associée (Col3=ID agent))
COl1 Col2 Col3 LB_TIE LB_D_EN_REL LB_ACT LB_MTF_SEL LB_D_ETRN_EPA LB_D_MAJ_ETRN_EPA LB_RESU_ANA
3 104682240 7140 AFFECTATAIRE : FRANCOIS
3 104682240 35256 AFFECTATAIRE : FRED
3 104682240 7224 AFFECTATAIRE : FABRICE
3 104682240 7264 AFFECTATAIRE : FABIEN
... |
...
4/
Code:
1 2 3 4 5 6 7
| TI_EDI_CPT_DIR_AG_COL4 (correspond au lignes de libellés (Col1=4))
COl1 Col2 Col3 LB_TIE LB_D_EN_REL LB_ACT LB_MTF_SEL LB_D_ETRN_EPA LB_D_MAJ_ETRN_EPA LB_RESU_ANA
4 104682240 CLIENT CONCERNE ENTREE EN RELATION ACTIVITE OPERATIONS MOTIVANT LA SELECTION DATE DE L'ENTRETIEN DATE DE L'ENTRETIEN RESULTAT DE L'EXAMEN
4 104682245 CLIENT CONCERNE ENTREE EN RELATION ACTIVITE OPERATIONS MOTIVANT LA SELECTION DATE DE L'ENTRETIEN DATE DE L'ENTRETIEN RESULTAT DE L'EXAMEN
4 104682246 CLIENT CONCERNE ENTREE EN RELATION ACTIVITE OPERATIONS MOTIVANT LA SELECTION DATE DE L'ENTRETIEN DATE DE L'ENTRETIEN RESULTAT DE L'EXAMEN
4 104682247 CLIENT CONCERNE ENTREE EN RELATION ACTIVITE OPERATIONS MOTIVANT LA SELECTION DATE DE L'ENTRETIEN DATE DE L'ENTRETIEN RESULTAT DE L'EXAMEN
4 300762019 CLIENT CONCERNE ENTREE EN RELATION ACTIVITE OPERATIONS MOTIVANT LA SELECTION DATE DE L'ENTRETIEN DATE DE L'ENTRETIEN RESULTAT DE L'EXAMEN |
5/
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| TI_EDI_CPT_DIR_AG_COL5 (correspond au lignes de données (Col1=5)) (Col3=ID agent)
COl1 Col2 Col3 LB_TIE LB_D_EN_REL LB_ACT LB_MTF_SEL LB_D_ETRN_EPA LB_D_MAJ_ETRN_EPA LB_RESU_ANA
5 104682240 7239 2240 XXXXXX X X MONSIEUR TOTO 10-OCT-97 employe du prive 1 Emissions de chèques pour 7900
5 104682240 7239 2240 XXXXXX X X MONSIEUR TOTO 10-OCT-97 employe du prive 8 Emissions de chèques pour 6900
5 104682240 7239 2240 XXXXXX X X MONSIEUR TOTO 10-OCT-97 employe du prive 2 Virements de chèques pour 13000
5 104682240 7239 2240 XXXXXX X X MONSIEUR TOTO 10-OCT-97 employe du prive 1 Virement de chèques pour 1659,79
5 104682240 7224 2240 XXXXXX X X MONSIEUR TATA 04-NOV-97 employe du public 7 Virements reçus pour 1788.92
5 104682240 7224 2240 XXXXXX X X MONSIEUR TATA 04-NOV-97 employe du public 1 Remises de chèques pour 50
5 104682240 7224 2240 XXXXXX X X MONSIEUR TATA 04-NOV-97 employe du public 3 Virements reçus pour 121.14
5 104682240 7224 2240 XXXXXX X X MONSIEUR TATA 04-NOV-97 employe du public 17 Emissions de chèques pour 826.3
5 104682240 7224 2240 XXXXXX X X MONSIEUR TATA 04-NOV-97 employe du public 2 Virements émis pour 100
5 104682240 7224 2240 XXXXXX X X MONSIEUR TATA 04-NOV-97 employe du public 2 Virements émis pour 100
5 104682240 7224 2240 XXXXXX X X MONSIEUR TATA 04-NOV-97 employe du public 7 Prélevements payés pour 766.52
...
... |
6/
Code:
1 2 3 4 5 6 7
| TI_EDI_CPT_DIR_AG_COL6 (correspond au lignes de données (Col1=6))
COl1 Col2 Col3 LB_TIE LB_D_EN_REL LB_ACT LB_MTF_SEL LB_D_ETRN_EPA LB_D_MAJ_ETRN_EPA LB_RESU_ANA
6 104682240 2240 XXXXXX X X MONSIEUR TOTO Jamais signalé Jamais topé
6 104682240 2240 XXXXXX X X MONSIEUR TATA Jamais signalé Jamais topé
6 104682240 2240 XXXXXX X X MONSIEUR TITI Jamais signalé Jamais topé
...
... |
La table cible doit ressembler à ça :
Code:
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
| 2 104682240
1 104682240 CONTROLE COMPTES A EXAMINER 10 2010
2 104682240
3 104682240 AFFECTATAIRE : FRANCOIS
2 104682240
4 104682240 CLIENT CONCERNE DATE RELATION ACTIVITE OPERATIONS MOTIVANT LA SELECTION
5 104682240 02324 XXXXX XXXX XX TOTO 07/02/1994 PHOTOCOPIE 13 REMISES CHEQUES POUR 734417.46 EURO
6 104682240 JAMAIS SIGNALE JAMAIS TOPE 249 VIREMENTS RECUS POUR 463486.57 EURO
6 104682240 2 EMISS. CHQ MONTANT ROND POUR 400000 EURO
2 104682240
3 104682240 AFFECTATAIRE : FRED
2 104682240
4 104682240 CLIENT CONCERNE DATE RELATION ACTIVITE OPERATIONS MOTIVANT LA SELECTION
5 104682240 02324 XXXXXX XXXX XX TATA 05/11/2009 TRAVAUX D INSTALLATION 9 REMISES CHEQUES POUR 43790.13 EURO
6 104682240 JAMAIS SIGNALE JAMAIS TOPE 1 TRANSFERTS IMPORT POUR 36138.19 EURO
2 104682245
1 104682245 CONTROLE COMPTES A EXAMINER 10 2010
2 104682245
3 104682245 AFFECTATAIRE : FABRICE
2 104682245
4 104682245 CLIENT CONCERNE DATE RELATION ACTIVITE OPERATIONS MOTIVANT LA SELECTION
5 104682245 02324 XXXXXX XXXX XX TETE 06/09/1996 . ELECTRICIEN 249 VIREMENTS RECUS POUR 463486.57 EURO
6 104682245
2 104682246
1 104682246 CONTROLE COMPTES A EXAMINER 10 2010
2 104682246
3 104682246 AFFECTATAIRE : FABIEN
2 104682246
4 104682246 CLIENT CONCERNE DATE RELATION ACTIVITE OPERATIONS MOTIVANT LA SELECTION
5 104682246 02137 XXXXXX XXXX XX TITI 28/10/1996 PLOMBIER 18 VIREMENTS RECUS POUR 227018.79 EURO
6 104682246 JAMAIS SIGNALE JAMAIS TOPE 1 TRANSFERTS EXPORT POUR 35974.5 EURO
2 104682246
3 104682246 AFFECTATAIRE : PHILIPPE
2 104682246
4 104682246 CLIENT CONCERNE DATE RELATION ACTIVITE OPERATIONS MOTIVANT LA SELECTION
5 104682246 02137 XXXXXX XXXX XX TUTU 09/05/2007 EDITION 2 REMISES CHEQUES POUR 53724.32 EURO
6 104682246 JAMAIS SIGNALE TOPE EN 200810 1 TRANSFERTS EXPORT POUR 42825.61 EURO
2 104682246
... |
La requête que j'ai créée ne me satisfait pas :
select LST.* from (
select * from ti_edi_cpt_dir_ag_col1
union all
select * from ti_edi_cpt_dir_ag_col2
union all
select * from ti_edi_cpt_dir_ag_col3
union all
select * from ti_edi_cpt_dir_ag_col4
union all
select * from ti_edi_cpt_dir_ag_col5
union all
select * from ti_edi_cpt_dir_ag_col6) LST, TI_EDI_LIG_ORDER ORD
WHERE LST.COL1 = ORD.LIG
order by LST.COL2, ORD.TYP, ORD.ORD
avec la table TI_EDI_LIG_ORDER qui a la structure :
Code:
1 2 3 4 5 6 7 8 9 10
| TYP LIG ORD
1 2 1
1 1 2
1 2 3
2 3 1
2 2 2
2 4 3
2 5 4
2 6 5
2 2 6 |
J'avoue que je n'ai pas d'idée...
Merci d'avance pour votre aide