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 : Sélectionner tout - Visualiser dans une fenêtre à part
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/
2/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
3/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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/
5/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
6/
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 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 ... ...
La table cible doit ressembler à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 requête que j'ai créée ne me satisfait 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
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 ...
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 :
J'avoue que je n'ai pas d'idée...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci d'avance pour votre aide
Partager