Pour l'instant je dois rappeler plusieurs fois la fonction sys_connect_by_path pour séparer ma hiérarchie.
c'est pas super beau, pas optimisé et un peu trop hardcodé à mon gout, surtout si mes champs peuvent avoir une longueur aléatoire.
Est-ce qu'il y a une fonction oracle qui pourrais me créer plusieurs colonne en fonction de la longueur de la hiérarchie?
Autre question:
Est ce que le fait de ne pas mettre LEVEL dans mes champs posent un problème vu que j'utilise déjà ys_connect_by_path?
Merci de votre aide
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 SELECT lev.cpy_lev_n "lev N", trim(substr(sys_connect_by_path(lpad(cpy.cpy_long_nm,50,' '),','),2,50)) L1, trim(substr(sys_connect_by_path(lpad(cpy.cpy_long_nm,50,' '),','),53,50)) L2, trim(substr(sys_connect_by_path(lpad(cpy.cpy_long_nm,50,' '),','),104,50)) L3, LEVEL, lev.cpy_lev_n1 "lev N1", cpy.cpy_long_nm "COMPANY_NAME", roce.exercise, roce.period_dt, roce.oi_mat, roce.roce FROM sck_cpy_level lev, sck_roce roce, sck_ctrl_cpy cpy WHERE roce.cpy_lev = lev.cpy_lev_n AND roce.cpy_lev = cpy.comp_cde START WITH cpy_lev_n = 'N9999' CONNECT BY PRIOR cpy_lev_n = cpy_lev_n1
Partager