안녕하세요. 테이블 4개를 조인하여 데이타를 가져와야 합니다.
물론 소스로 처리할수도 있겠지만, 쿼리에 익숙치 못하여, 여러 선배님들의 조언으로
한수 배우고자 합니다. 도움 부탁드리겠습니다 ^^;;
<테이블 1>
테이블 명 : matmst01
필드 명 : center_cd, asset_div, partac_cd, partpr_cd, stock_cnt
<테이블 2>
테이블 명 : inoutx01
필드 명 : center_cd, partac_cd, partpr_cd, in_cnt, out_cnt
<테이블 3>
테이블 명 : partac01
필드 명 : partac_cd, partac_nm
<테이블 4>
테이블 명 : partpr01
필드 명 : partpr_cd, partpr_nm
조건 :
1번 테이블을 기준으로하여, 2번 테이블과 LEFT OUTER JOIN을 하여,
1번 테이블과 2번 테이블의 센터가 같은 데이타를 추출하고,
1번 테이블의 partac_cd, partpr_cd가 같은 품목을 그룹핑하여 sum(stock_cnt)를 구하고,
2번 테이블과 1번 테이블의 partac_cd, partpr_cd이 같은 in_cnt와, out_cnt를 SUM합니다.
그리고 위의 결과값에서 partac_cd, partpr_cd를 가지고 테이블 3, 4에서
이름을 가져옵니다.
===============================================================================
일단 쿼리를 이렇게 작성하였습니다.
그런데 이름을 가져오려고 하니, c.partac_nm이 그룹핑되지 않았다면서 가져오질 못하여,
partac_nm을 그룹핑 하였더니, 원래 ROW는 208개였는데 갯수가 107개로 줄어버립니다.
뭔가 이상한거 같아서 이렇게 질문을 드리게 되었습니다.
GROUPING을 명확하게 이해하지 못하여 발생하는 오류 같은데,
선배님들의 조언 부탁드리겠습니다 (__)
-- 작성 쿼리
select
CASE a.asset_div
WHEN 'TT0001' THEN '상품'
WHEN 'TT0002' THEN '저장품'
END AS asset_div,
a.partacc_cd,
c.partac_nm,
a.partptr_cd,
SUM(a.stock_cnt) stock_cnt,
SUM(isNull(b.in_cnt,0)) in_cnt,
SUM(isNull(b.out_cnt,0)) out_cnt
from matmst01 a left outer join
inoutx01 b ON a.center_cd = b.center_cd,
partac01 c
where a.center_cd = 'AA0001'
and a.asset_div like 'TT0002%'
group by a.asset_div, a.partacc_cd, a.partptr_cd,
b.partacc_cd, b.partptr_cd,
c.partac_nm
|