MS-SQL 조건문안의 재귀쿼리는..? 0 4 291

by 실베 [SQL Query] [2018.03.13 13:52:35]


MS-SQL 사용중인데요..

오라클 -> MS-SQL 마이그레이션 작업중에 있습니다.

 

만약 이런형태의 쿼리는... CTE 테이블을 어떤식으로 조회해야 되나요?

감사합니다.

	select
	*
	from table d
	WHERE d.tree_id In (  SELECT tid
						   From edm_tree
						  START WITH tid = 'T2'
						 CONNECT BY PRIOR tid = pid) 	

 

by 우리집아찌 [2018.03.13 14:07:26]

http://wiki.gurubee.net/pages/viewpage.action?pageId=26744140

밑에 SQL SERVER 예제 있습니다.

마농님거 찾아보는데 잘 안찾아지네요.


by 실베 [2018.03.13 14:37:20]

답변감사합니다.

그런데 조건문에서의 with 는 어디 다른곳으로 뺴야하는건지...


	SELECT
	*
	FROM table d
	WHERE  d.tree_id In (   with cte(tid)
						 AS
						 (
						 SELECT tid
						 FROM edm_tree
						 WHERE tid='T2'
						 UNION ALL
						 select a.tid 
						 FROM edm_tree a, cte b
						 WHERE a.pid=b.tid
						 )
						 SELECT tid FROM CTE
                         ) 

 

 

 

이런형태로는 안되네요.. 흠


by 마농 [2018.03.13 14:39:35]
WITH edm_tree_cte AS
(
SELECT tid
  FROM edm_tree
 WHERE tid = 'T2'
 UNION ALL
SELECT c.tid
  FROM edm_tree_cte p
 INNER JOIN edm_tree c
    ON p.tid = c.pid
)
SELECT *
  FROM table d
 WHERE d.tree_id IN (SELECT tid FROM edm_tree_cte)
;

 


by 실베 [2018.03.13 14:55:22]

감사합니다.

오라클만하다가 sql 만지니까.. 계층같은건좀 어렵네요 ㅠㅠ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입