소계 구하는 쿼리좀 알려주세요 0 2 957

by 잼보야 [SQL Query] [2016.12.09 18:00:09]


안녕하세요. 작업하다 막히면 늘 이곳에서 도움을 구하고 있습니다. 실력이 부족하여 이번에도 도움 요청 드립니다.
1. 원데이타입니다.

상품명 색상 사이즈 구분 박스수 박스당수량 총수량
상품1 노랑 S 백화점 50  50 
상품1 노랑 S 아울렛 51  102 
상품1 노랑 M 백화점 51  153 
상품1 노랑 M 아울렛 51  204 
상품2 빨강 S 백화점 51  255 
상품2 빨강 S 백화점 51  306 
상품2 빨강 M 백화점 51  357 
상품2 빨강 M 백화점 51  408 

 

아래와 같이 [상품명, 색상별] 소계 및 총합계를 구하여 같이 보여지게 하고 싶습니다.

상품명 색상 사이즈 구분 박스수 박스당수량 총수량  
상품1 노랑 S 백화점 50  50   
상품1 노랑 S 아울렛 51  102   
상품1 노랑 M 백화점 51  153   
상품1 노랑 M 아울렛 51  204   
소계 10   509  <<상품명, 색상별 소계
상품2 빨강 S 백화점 51  255   
상품2 빨강 S 백화점 51  306   
상품2 빨강 M 백화점 51  357   
상품2 빨강 M 백화점 51  408   
소계 26   1326  <<상품명, 색상별 소계
합계 36   1835  <<총합계

 

rollup함수를 사용하여 해보려고 몇번 시도 했는데 원하는대로 나오지가 않습니다.

도와주세요~

by 마농 [2016.12.12 08:37:50]
WITH t (상품명, 색상, 사이즈, 구분, 박스수, 박스당수량, 총수량) AS
(
          SELECT '상품1', '노랑', 'S', '백화점', 1, 50,  50 FROM dual
UNION ALL SELECT '상품1', '노랑', 'S', '아울렛', 2, 51, 102 FROM dual
UNION ALL SELECT '상품1', '노랑', 'M', '백화점', 3, 51, 153 FROM dual
UNION ALL SELECT '상품1', '노랑', 'M', '아울렛', 4, 51, 204 FROM dual
UNION ALL SELECT '상품2', '빨강', 'S', '백화점', 5, 51, 255 FROM dual
UNION ALL SELECT '상품2', '빨강', 'S', '백화점', 6, 51, 306 FROM dual
UNION ALL SELECT '상품2', '빨강', 'M', '백화점', 7, 51, 357 FROM dual
UNION ALL SELECT '상품2', '빨강', 'M', '백화점', 8, 51, 408 FROM dual
)
SELECT 상품명, 색상, 사이즈, 구분
     , SUM(박스수    ) 박스수
     , SUM(박스당수량) 박스당수량
     , SUM(총수량    ) 총수량
  FROM t
 GROUP BY ROLLUP((상품명, 색상), (사이즈, 구분))
;

 


by 잼보야 [2016.12.12 08:53:02]

마농님~ 매번 감사합니다. 급할때마다 늘 도움 주시네요. 

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