task_id parent_task_id task_name
1 0 설계
2 0 분석
3 0 개발
4 1 1.1 업무 범위 확정
5 1 1.2 업무 단위 정의
6 2 2.1 검토 승인 workflow 분석
7 2 2.2 검토 결재 workflow 확정
8 3 3.1 자~알 개발
9 3 3.2 자~~알 테스트
이렇게 생긴 테이블이 있습니다.
보시다시피 상위를 가지고 있습니다.
원하는 형식은
1 0 설계
4 1 1.1 업무 범위 확정
5 1 1.2 업무 단위 정의
2 0 분석
6 2 2.1 검토 승인 workflow 분석
7 2 2.2 검토 결재 workflow 확정
3 0 개발
8 3 3.1 자~알 개발
9 3 3.2 자~~알 테스트
이런식으로 나와야 되는데.. 제가 짠 쿼리로는 도저히 ㅡㅜ 안나오는군요;;
도움 부탁드립니다.
사용하는 MSSQL은 2005 버전입니다.
with temp(task_id, parent_task_id, task_name, Level) as (
select task_id, parent_task_id, task_name, 0 as Level
from project_task
where parent_task_id = '0'
union all
select A.task_id, A.parent_task_id, A.task_name, B.Level+1 as Level
from project_task A Inner Join temp B
on A.parent_task_id = B.task_id
)
select * from temp A
|