안녕하세요
SELECT LPAD(' ',2*(A.DEPT_LVL-1))||DEPT_NM ,DEPT_LVL
FROM CM_MS_DEPT
START WITH DEPT_LVL = 0
CONNECT BY PRIOR DEPT_ID=UP_DEPT_ID
이런식으로 순위에 따라
그안에
SELECT
A.USER_NAME
,B.JIKGUB_NM
,C.TEAM_NM
FROM TBINSA A, TBJIKGUB B, TBTEAM C
WHERE JIKGUB_NO=B.JIKGUB_NO
AND TEAM_CD=C.TEAM_CD
dept_nm에 따라서 select 문의 team_nm과 dept_nm이 같을때
출력하고 싶은데 그런것이 가능한가요 ㅜㅜ 조직도 처럼 출력이 될까요
답변감사드립니다.
tbteam과 cm_ms_dept는 다른테이블입니다. tbteam에는 lvl항목이 없고 cm_ms_Dept에만 있습니다.
team_cd 와 dept_id 로 연결하면 되나요? 아니요 둘은 달라라서 연결을 하려면
DEPT_NM = U.TEAM_NM u는 select 문입니다.
cm_ms_dept 에 dept_type과 tbinsa 테이블에 tam_cd를 연결해주어햐 할것같습니다.
그런데 이걸 어어떤식으로 연결을 해야할까요
SELECT LPAD(' ',2*(DEPT_LVL-1))||DEPT_NM ,DEPT_LVL
FROM CM_MS_DEPT ,
(SELECT
A.USER_NAME
,B.JIKGUB_NM
,C.TEAM_NM
FROM TBINSA A, TBJIKGUB B, TBTEAM C
WHERE A.JIKGUB_NO=B.JIKGUB_NO
AND A.TEAM_CD=C.TEAM_CD) U
WHERE DEPT_NM = U.TEAM_NM
START WITH DEPT_LVL = 0
CONNECT BY PRIOR DEPT_ID=UP_DEPT_ID
이런식으로 하면 아무것도 안나와서용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | SELECT a.user_name , b.jikgub_nm , c.team_nm , d.dept_nm_1 , d.dept_nm_2 FROM tbinsa a , tbjikgub b , tbteam c , ( SELECT dept_type , dept_id , dept_nm -- 부서명 , LPAD( ' ' , 2*(dept_lvl-1)) || dept_nm dept_nm_1 -- 들여쓰기 , SUBSTR(SYS_CONNECT_BY_PATH(dept_nm, '/' ), 2) dept_nm_2 -- 풀네임 , dept_lvl , ROWNUM rn FROM cm_ms_dept START WITH dept_lvl = 0 CONNECT BY PRIOR dept_id = up_dept_id -- ORDER SIBLINGS BY dept_order -- 직제 순서 ) d WHERE a.jikgub_no = b.jikgub_no AND a.team_cd = c.team_cd AND a.team_cd = d.dept_type -- ORDER BY d.rn, a.jikgub_no, a.emp_no -- 직제 순 출력 ; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | -- 직제순 출력이 필요 없이 들여쓰기 기능만 필요하다면? -- 굳이 계층쿼리 전개할 필요가 없습니다. SELECT a.user_name , b.jikgub_nm , c.team_nm , LPAD( ' ' , 2*(d.dept_lvl-1)) || d.dept_nm dept_nm FROM tbinsa a , tbjikgub b , tbteam c , cm_ms_dept d WHERE a.jikgub_no = b.jikgub_no AND a.team_cd = c.team_cd AND a.team_cd = d.dept_type ; |