안녕하세요
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 항목이 없나요?
team_cd 와 dept_id 로 연결하면 되나요?
답변감사드립니다.
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
이런식으로 하면 아무것도 안나와서용
DEPT_TYPE과 TEAM_CD는 둘다 팀코드를 나타내고 있는데 컬럼명이 다르게 되어있습니다.
음일단 저희회사는 중복은 없어서요 ... 일단은 그렇게 해보았습니다.TEAM_CD가 맞습니다. 오타입니다.... SELECT 문과 LPDA를 합치과시ㅠ어서dept_type WHERE 절에 넣는 다고생각했습니다.
dept_type 과 tam_cd 에 대한 설명도 해주세요.
tam_cd 가 team_cd 의 오타는 아닌지?
dept_type 은 어떤 항목인지? 왜 연결해야 하는지?
그리고, 이름으로 연결하면 중복 가능성이 있을 텐데요?
예를 들면 각 지사별로 총무부가 존재한다면?
그럼 dept_nm 이 아닌 dept_type 으로 연결하면 되죠.
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 -- 직제 순 출력
;
감사합니다 ㅜㅜ 많이 배웠습니다
-- 직제순 출력이 필요 없이 들여쓰기 기능만 필요하다면?
-- 굳이 계층쿼리 전개할 필요가 없습니다.
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
;