각 그룹별로 조인한 전체 합을 각 사용자별로 한 레코드에 가져올수 있을까요? 0 3 3,226

by Kay Kwon [SQL Query] 그룹 sum [2013.07.12 10:13:22]



안녕하세요.

오라클 9i 사용하고 있구요.

테이블 4개를 조인해서  각 2개씩의 테이블 조인 별 합을 한 쿼리로 구현하고 싶습니다.

A 와 B 테이블의 조인해서 얻어온 값의 전체 합을 첫번째 컬럼

A 와 C 테이블의 조인해서 얻어온 값의 전체 합을 두번째 컬럼

A 와 D 테이블의 조인해서 얻어온 값의 전체 합을 세번째 컬럼

을 각 사용자 아이디에 실행 번호별로 표시하고 싶습니다.


====|=======|===================|===================|===================
   id   실행번호  sum(A테이블 & B테이블)  sum(A테이블 & C테이블)   sum(A테이블 & D테이블)
====|=======|===================|===================|===================
hong    1     20000    5000000    60000000
hong    2     30000    4000000    20000000
ki12     1     20000    2000000    50000000
ki12     2     30000    1000000    10000000



테이블A
id 실행번호
hong 1
hong 1
ki12 1
ki12 2

테이블B
id 실행번호 데이터값
ki12 2 30000
hong 1 50000
hong 1 40000

테이블C
id 실행번호 데이터값
hong 1 50000
hong 1 6000
ki12 2 50000
ki12 1 40000

테이블D
id 실행번호 데이터값
hong 1 50000
hong 2 50000
ki12 1 40000
ki12 2 50000

테이블 4개는 위와 같은 형식이구요..
값은 제가 임의로 넣었습니다.

고수님들의 조언 부탁 드립니다..^^
by 아린 [2013.07.12 10:26:47]
4개 테이블이 똑같은 구조인가요?

테이블  정보와 관련 데이터를 보여주세요.

by 마농 [2013.07.12 10:39:01]
SELECT a.id
     , a.no
     , NVL(b.b, 0) b
     , NVL(c.c, 0) c
     , NVL(d.d, 0) d
  FROM a
     , (SELECT id, no, SUM(v) b FROM b GROUP BY id, no) b
     , (SELECT id, no, SUM(v) c FROM c GROUP BY id, no) c
     , (SELECT id, no, SUM(v) d FROM d GROUP BY id, no) d
 WHERE a.id = b.id(+)
   AND a.id = c.id(+)
   AND a.id = d.id(+)
   AND a.no = b.no(+)
   AND a.no = c.no(+)
   AND a.no = d.no(+)
 ORDER BY a.id, a.no
;

by Kay Kwon [2013.07.12 11:32:36]

아 감사합니다..^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입