개발(MS-SQL)

CTE 재귀쿼리 역BOM

swkhan 2014. 5. 27. 15:50


WITH CTE(CD_ITEM, CD_MATL, LVL) 

 AS ( 

        SELECT CD_ITEM, CD_MATL, 1 AS LVL 

        FROM PR_BOM 

        WHERE CD_MATL  = 'ST630-0601' AND CD_COMPANY ='1000'    --(앵커멤버)

        

        UNION ALL 


SELECT C.CD_ITEM, C.CD_MATL, LVL+1 AS LVL --(재귀멤버)

        FROM PR_BOM C

        INNER JOIN CTE D

ON C.CD_MATL = D.CD_ITEM                            -- 조인 조건  

        WHERE C.CD_COMPANY ='1000'

 ) 

SELECT * FROM CTE