Bonjour,
Je dois travailler sur des données en gérant 3 niveaux de rupture, avec comme contrainte que les valeurs des colonnes de rupture ne s'affichent pas sur chaque enregistrement, mais que lorsque l'on passe d'une valeur à l'autre. Donc, le GROUP BY n'est pas approprié, mais j'ai réussi à faire ça avec des NESTED CURSOR.
Le but maintenant est de "balancer" tout ça dans des tableaux à 1, 2, 3 et 4 (pour les enreg. détails) dimensions afin de retravailler les données, idéalement en utilisant un BULK COLLECT, mais c'est là que je n'y arrive plus.
Je vous poste ma requête qui marche (sans les BULK COLLECT) et me renvoie des données sous la forme :
A
AA
AAA
AAAA BBBB CCCC DDDD
AAAA EEEE FFFF GGGG
HHHH IIII JJJJ
BBB
AAAA BBBB CCCC DDDD
.......................
CCC
....................
BB
AAA
AAAA BBBB CCCC DDDD
.......................
....................
CC
.....................
B
AA
.....................
C
.....................
Et ici la requête :
select w1.datet, cursor(select w2.code_eds, cursor(select w3.datet_guichet, cursor(select w1.datet || ' ' || p.point, w4.datet, w4.pa, w4.pr, w4.ps
bulk collect into TTTTAB_DEMI_PAS(w_ind_1)(w_ind_2)(w_ind_3)(w_ind_4),
TTTTAB_DATET_LONG(w_ind_1)(w_ind_2)(w_ind_3)(w_ind_4),
TTTTAB_PA(w_ind_1)(w_ind_2)(w_ind_3)(w_ind_4),
TTTTAB_PR(w_ind_1)(w_ind_2)(w_ind_3)(w_ind_4),
TTTTAB_PS(w_ind_1)(w_ind_2)(w_ind_3)(w_ind_4)
from warehouse_redec_rte w4, cpvij_param_datet p
where w1.datet || ' ' || p.point = to_char(w4.datet (+), 'YYYYMMDD HH24:MI')
and to_char(w4.datet (+), 'YYYYMMDD') = w3.datet
and w4.code_eds (+) = w3.code_eds
and w4.datet_guichet (+) = w3.datet_guichet
order by w1.datet || ' ' || p.point)
bulk collect into TTTAB_DATET_GUICHET(w_ind_1)(w_ind_2)(w_ind_3)
from (select distinct to_char(datet, 'YYYYMMDD') datet, code_eds, datet_guichet from warehouse_redec_rte) w3
where w3.datet = w2.datet
and w3.code_eds = w2.code_eds
order by w3.datet_guichet)
bulk collect into TTAB_CODE_EDS(w_ind_1)(w_ind_2)
from (select distinct to_char(datet, 'YYYYMMDD') datet, code_eds from warehouse_redec_rte) w2
where w2.datet = w1.datet
order by w2.code_eds)
bulk collect into TAB_DATET_COURT(w_ind_1)
from (select distinct to_char(datet, 'YYYYMMDD') datet from warehouse_redec_rte) w1
order by w1.datet;
En espérant que quelqu'un a une idée.
Merci.
Partager