树形结构 排序问题

SELECT p.* ,SUBSTR(tree,2,LENGTH(tree)-6)|| REPLACE(SUBSTR(tree,LENGTH(tree)-4,LENGTH(tree)),'.',charsplit) AS TREE1 FROM (
SELECT m.*,
 SYS_CONNECT_BY_PATH(outline,'.')  AS tree

 FROM  (
SELECT pidorder.ID,pidorder.NODE_TYPE,pidorder.PARENT_ID,pidorder.RN,
CASE WHEN LENGTH(TO_CHAR(pidorder.RN)) = 1 THEN '000'||TO_CHAR(pidorder.RN) WHEN  LENGTH(TO_CHAR(pidorder.RN)) = 2 THEN '00'||TO_CHAR(pidorder.RN) END AS outline, 
pidorder.charsplit   FROM  (SELECT ID,PARENT_ID,NODE_TYPE,CASE WHEN NODE_TYPE = 2 THEN '-' WHEN PARENT_ID = 0 THEN '' ELSE '.' END AS charsplit, row_number() over(partition by PARENT_ID order by ranking asc)  as RN FROM  SE_REQ_ITEM_INFO  where DOCUMENT_ID='176751') pidorder 

)m start with PARENT_ID = 0
connect by   PRIOR id=PARENT_ID 
)p ORDER BY TREE1


树形结构 排序问题_第1张图片

 

你可能感兴趣的:(sql,java,数据库)