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