오라클에서 계층구조를 출력하는 방법으로 

Start With...와 Connect by를 많이 사용합니다.


또 계층구조의 그룹으로 묶어서 출력하기 위해서,

 ORDER SIBLINGS BY..를 사용합니다.


이 부분을 MS-SQL용으로 변환하는 sql입니다.


필요하시분 아래 샘플 긁어다 참조해서 쓰세요.


Oracle...

-----------------------------------------------------------------------------

SELECT FOLDER_ID

         , NAME

         , PARENT_ID

         , ITEM_INDEX

         , LEVEL

 FROM FOLDERS 

 START WITH FOLDER_ID = #{value} 

CONNECT BY PRIOR FOLDER_ID = PARENT_ID 

   ORDER SIBLINGS BY FTI.ITEM_INDEX

                             , FTI.NAME

-----------------------------------------------------------------------------



MS-SQL... 

(1) 아래 SQL에서 WITH 절은 Start With...와 Connect by..을 대체하는 부분

(2) 아래 SQL에서 파란색 칠한 부분이 오라클에서 ORDER SIBLINGS BY...을 대체하는 부분

-----------------------------------------------------------------------------

WITH WH AS 

  (

             SELECT 

    A.FOLDER_ID

  , A.NAME

  , A.PARENT_ID

  , A.ITEM_INDEX

  , CONVERT(NVARCHAR(1000), '/' + CONCAT(A.ITEM_INDEX, A.NAME) ) AS SORT  

    FROM FOLDERS A

WHERE A.FOLDER_ID = #{value} 


   UNION ALL


    SELECT 

      B.FOLDER_ID

    , B.NAME

     , B.PARENT_ID

    , B.ITEM_INDEX

      , CONVERT(NVARCHAR(1000), WH.SORT + '/' + CONCAT(B.ITEM_INDEX, B.NAME) ) AS  SORT  

     FROM FOLDERS B

                    , WH 

WHERE B.FOLDER_ID = #{value} 

                   AND WH.FOLDER_ID = B.PARENT_ID

  )


SELECT WH.*  

     FROM WH

    ORDER BY WH.SORT

-----------------------------------------------------------------------------

Posted by 우라질레이터

urajilation@gmail.com
우라질레이터

달력

태그목록