오모씨
462
2018-02-05 16:26:19
3
825

JOIN 쿼리를 통하여 두 테이블 중 한 테이블의 일부 값을 sum해서 검색하고 싶습니다.


안녕하세요.


1:n으로 연결된 두 테이블의 정보를 JOIN 쿼리를 통하여 검색하고 싶은데 한 테이블의 값은 sum을 해서 검색하고 싶습니다.

예를 들어

첫번째 테이블(tb1)은

yeardvky1ky2ky3spent
20151112005000
20152112006000
20161913015000
20161221014000

이와 같이 되어 있으며, 두번째 테이블(tb2)은

yeardvky1ky2ky3sm1sm2sm3cost
2015111200999998350
2015111200899993450
201521120088888750
201521120089919040
201619130172779830
201612210162334260
2016122101521133100

와 같이 1:n으로 두 테이블이 연결되어 있습니다. unique한 키는year, dv, ky1, ky2, ky3의 조합 입니다.

첫번째 테이블에서 한개의 키(year, dv, ky1, ky2, ky3의 조합)를 갖는 데이터는 두번째 테이블에 n개의 sm1, sm2, sm3의 조합으로 데이터를 갖고 있습니다.


JOIN 쿼리를 통하여 tb1.year, tb1.dv, tb1.ky1, tb1.ky2, tb1.ky3, tb1.spent, sum(tb2.cost)의 정보를 구하고 싶습니다. 단 특정 sm1, sm2, sm3의 조합을 갖는 것은 제외하고자 WHERE절에 NOT(tb2.sm1='00' AND tb2.sm2='00' AND tb2.sm3='00')같은 조건을 달고 싶습니다. 


최종적으로는 

yeardvky1ky2ky3spentsum(cost)
20151112005000800
2015211200600090
2016191301500030
20161221014000160

와 같은 테이블이 나와야 합니다.


쿼리 잘 하시는분 답변 부탁드립니다.

0
  • 답변 3

  • 꿀두
    1k
    2018-02-05 16:32:41

    인조키 하나면 간단하게 해결될텐데

  • scarjsp
    321
    2018-02-05 16:51:21 작성 2018-02-05 17:08:26 수정됨

    select a, b, sum(c)

    from tbla inner join tblb on tblb.a = tbla.a and tblb.b = tbla.b

    where ...

    group by tbla.a, tbla.b


    대충 이렇게 하면 될 것 같아요.

  • 오모씨
    462
    2018-02-05 17:10:20 작성 2018-02-05 17:10:40 수정됨
    네. 우선 답변 감사드립니다. 쿼리문은 맞는데 필드명을 잘못써서 오류가 났었네요. 사수가 없이 혼자 배우고 있는 사람이라 질문했습니다. 이쪽 일 안하는데 질문드려 죄송합니다~~~ ^^
  • 로그인을 하시면 답변을 등록할 수 있습니다.