ercnam
5k
2018-03-30 08:59:42
3
2145

각 제품별 월간 총합을 구하려는데 도움 요청합니다.


안녕하세요,

저번의 일별 합계는 PIVOT 테이블을 이용해서 잘 구현했었는데요..


이번엔 월별 합계를 구해달라고 합니다........



데이터는 좌측처럼 각 상품마다 n일에 n개 만큼 팔렸다.. 라고 ROW로 주르륵 나열되어있고

그게 몇월의 데이터인지 month 컬럼에 기입하고 있습니다.

이제 이걸 월별 합계로 만들어서 우측처럼 보여줘야 하는데....


SELECT stnm, servicename, servicecategory, year, month, count(day) as count

FROM CHART

WHERE month = '02'

GROUP BY stnm, servicename, servicecategory, year, month


일단 dbms는 mssql 입니다..저번글엔 말을 안했었네요..

아무튼 저렇게 쿼리를 날리면 일단 2월에 해당하는 상품별 총합은 구해집니다.

다만..  특정 월에 대한 합계만 구해지지 1년 12달에 해당하는 데이터는 어떻게 뽑아야 할지 모르겠네요;

서브쿼리를 써봤지만 서브쿼리는 ROW 값이 다르게 산출되면 쓰지 못하는거 같고;;

무식하게 1달씩 12번 뽑아서 JAVA에서 합칠까..? 라는 생각도 해보았는데

이거는 특정 달에 하나도 팔리지 않은 상품은 집계 자체가 안되서 열이 안맞는다는걸 알고 포기했습니다..

(사실 이것도 안팔린 상품도 무조건 표에는 나와야 할텐데 말이죠;;;)


왠지 저것도 PIVOT으로 해결이 가능할거 같은 느낌도 드는데

막히네요... 해서 도움을 구합니다..ㅠㅠ

0
  • 답변 3

  • XeO3
    552
    2018-03-30 09:08:43

    이런식으로 하시면 될것같네요.


    SELECT 
    	stnm, 
    	servicename, 
    	sum(case when month = '01' then 1 else 0 end) month01,
    	sum(case when month = '02' then 1 else 0 end) month02,
    	sum(case when month = '03' then 1 else 0 end) month03,
    	sum(case when month = '04' then 1 else 0 end) month04,
    	....
    FROM CHART
    GROUP BY stnm, servicename, servicecategory, year



  • 전재형
    4k
    2018-03-30 09:28:08

    https://stackoverflow.com/questions/12598120/mysql-pivot-table-query-with-dynamic-columns



  • ercnam
    5k
    2018-03-30 09:29:48

    XeO3

    와....대박이네요.....한방에 해결됬습니다;;

    게다가 안팔린 상품도 0 으로 찍히고...... 존경스럽습니다 진짜...


    저도 DB 쿼리 공부좀 해야할거 같긴 하네요 ㅠㅠ 쿼리만 잘짜도 일이 이렇게 잘 풀리는데...

  • 로그인을 하시면 답변을 등록할 수 있습니다.