SELECT T_BF.TEAM, T_BF.MNGNM, T_BF.STATUS, T_BF.HOSTNAME,, DPA.DPA_TAG, DPA.DPA_NODENAME, DPA.MAKEMODEL, DPA.NODEID, DPA.DPA_SWDECTION FROM T_INSTALL T_BF LEFT JOIN D_DPA DPA ON UPPER(T_BF.HOSTNAME) = UPPER(DPA.DPA_TAG) AND DPA_SWDECTION NOT IN('MANAGER 9.0')
기준이 되는 T_INSTALL 테이블데이터 건수는 13,000건입니다.
D_DPA 테이블의 DPA_TAG컬럼과 조인을 하는데 DPA_TAG컬럼데이터가 NULL인것도 있고, 중복으로 들어가있는데이터도 있습니다.
별도의 조건없이 위의 기본 조건으로조회시 13,000건의 데이터가 나와야 하는 상황입니다.
DPA_TAG 가 중복인 경우는 첫번째 ROW의 정보를 사용하는것으로 간주합니다.
이같은 상황인데 중복제거를 어떤식으로 해야할까요..
UPPER(T_BF.HOSTNAME) = UPPER(DPA.DPA_TAG)
이부분에서 서브쿼리로 해야하나요? 가르침 부탁드립니다 TT
T_INSTALL TABLE
TEAM | MNGNM | STATUS | HOSTNAME |
인프라 | 개발 | PWSASE3 | |
인프라 | 개발 | ASWSE55 |
D_DPA TABLE
DPA_TAG | DPA_NODENAME | MAKEMODEL | NODEID | DPA_SWDECTION |
pwsae3 | 121.1.1.1 | HP | 23522 | ENDPOINT 9.2 |
pwsae3 | 121.2.23 | IBM | 23542 | ENDPOINT 10.0 |
ASWSE55 | 202.15.2.3 | IBM | 52321 | ENDPOINT 9.2 |
UNKNOWN | RH228H | 23522 | ENDPOINT 9.1 |
데이터는 이와같이 들어가 있습니다.
T_INSTALL 테이블의 HOSTNAME는 중복되지않습니다.
SELECT * FROM (SELECT t_bf.team , t_bf.mngnm , t_bf.status , t_bf.hostname , dpa.dpa_tag , dpa.dpa_nodename , dpa.makemodel , dpa.nodeid , dpa.dpa_swdection , ROW_NUMBER() OVER(PARTITION BY 그룹기준 ORDER BY 정렬기준) rn FROM t_install t_bf LEFT JOIN d_dpa dpa ON UPPER(t_bf.hostname) = UPPER(dpa.dpa_tag) AND dpa_swdection NOT IN ('MANAGER 9.0') ) WHERE rn = 1 ;