database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 5686 게시물 읽기
No. 5686
하위트리 뽑아오는 sp문좀 봐주세요!!!
작성자
김홍재(ami60)
작성일
2010-06-21 13:49
조회수
6,618

지금 현재는 4단계 까지는 잘 가지고 옵니다... 3단계가 넘어가는 조직은 가지고 오질 못합니다...

sp구문은 아래와 같습니다...

대표

임원실

관리부

영업부

솔루션사업부

밖에 못가져옵니다...

 

대표

임원실

관리부

영업부

솔루션사업부

관리팀

영업팀

개발팀

사업소

사업소1

이렇게 뽑와 와야 되는데요....

 

declare @table1 table
(
 cg_key int,
 cg_code1 VARCHAR(8),
 cg_code2 VARCHAR(8),
 cg_name varchar(20),
 cg_priority INT,
 cg_depth int --추가
)

 

insert @table1 select '1','1000','0','대표','1',0
insert @table1 select '2','1100','1000','임원실','1',1
insert @table1 select '3','1200','1100','관리부','2',2
insert @table1 select '4','1300','1200','관리팀','3',3
insert @table1 select '5','1400','1100','영업부','1',2
insert @table1 select '6','1500','1400','영업팀','1',3
insert @table1 select '7','1600','1100','솔루션사업부','1',2
insert @table1 select '8','1700','1600','개발팀','2',3
insert @table1 select '9','1800','1300','사업소','1',4
insert @table1 select '10','1900','1300','사업소1','2',4

 

DECLARE @exit INT
DECLARE @tmp_cg_code VARCHAR(8)
SET @exit = 0

SET @tmp_cg_code = '1000'--자신의 소속된 그룹정보 cg_code2 지정
                         --
                        
SELECT * FROM @table1 a
WHERE
cg_code1 = @tmp_cg_code or
cg_code2 = @tmp_cg_code
or cg_code1 IN
(
 SELECT cg_code1 FROM @table1 b
 WHERE b.cg_code2 IN
 (
  SELECT cg_code1 FROM @table1
  WHERE cg_code2 = @tmp_cg_code
 )
)
ORDER BY a.cg_depth ASC,a.cg_priority ASC

 

이 글에 대한 댓글이 총 2건 있습니다.

-- 아래의 쿼리가 맞는것인지 모르겠네여.

Create Table tmp
(
 cg_key int,
 cg_code1 VARCHAR(8),
 cg_code2 VARCHAR(8),
 cg_name varchar(20),
 cg_priority INT,
 cg_depth int
)

 

insert tmp select '1','1000','0','대표','1',0
insert tmp select '2','1100','1000','임원실','1',1
insert tmp select '3','1200','1100','관리부','2',2
insert tmp select '4','1300','1200','관리팀','3',3
insert tmp select '5','1400','1100','영업부','1',2
insert tmp select '6','1500','1400','영업팀','1',3
insert tmp select '7','1600','1100','솔루션사업부','1',2
insert tmp select '8','1700','1600','개발팀','2',3
insert tmp select '9','1800','1300','사업소','1',4
insert tmp select '10','1900','1300','사업소1','2',4

with cte(cg_key, cg_code1, cg_code2,cg_name,cg_priority,cg_depth, lvl,sort)
as
(
select cg_key, cg_code1, cg_code2,cg_name,cg_priority,cg_depth, 1 as lvl,cast(cg_code1 as nvarchar(1000)) as sort
from tmp
where cg_code1 = '1000'
union all
select a.cg_key, a.cg_code1, a.cg_code2,a.cg_name,a.cg_priority,a.cg_depth, b.lvl+1 as lvl,
 cast(b.sort + '|' + a.cg_code1 as nvarchar(1000)) as sort
from tmp a, cte b
where a.cg_code1 = b.cg_code2
)
select cg_key, cg_code1, cg_code2,cg_name,cg_priority,cg_depth, lvl,sort
from cte
order by sort

-- 정렬은 마지막 order by 절에서 조절하시기 바랍니다.

-- 몇단계가 되더라도 상관없는 쿼리입니다.

이정재님이 2010-07-22 12:59에 작성한 댓글입니다. Edit

답변감사드립니다...

김홍재(ami60)님이 2011-01-05 13:18에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
5689최소 쿼리 메모리 라는 메세지가 나옵니다..
조중연
2010-06-24
7032
5688기본키를 많이 잡는게 좋을지...
열공자
2010-06-22
5712
5687쿼리문이 시간이 지날수록 느려지는 문제
롤링어택
2010-06-22
6086
5686하위트리 뽑아오는 sp문좀 봐주세요!!! [2]
김홍재
2010-06-21
6618
5685특정 테이블 UPDATE 문제
양상희
2010-06-17
6043
5684[질문]두개의 필드를 붙여서 보이거나 비교시 쿼리 [1]
초보자
2010-06-17
6061
5683windows server 2008 R2 문의...드립니다.. [1]
와니
2010-06-16
6361
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다