테이블 데이터 구조가 대략이렇습니다.
1. 카테고리 테이블
코드 | 카테고리명 |
A1 | 의류/잡화 |
A2 | 홈데코 |
A3 | 악세서리 |
A5 | 가방 |
2. 상품 테이블
카테고리 | 매장코드 | 상품명 | 판매가격 |
3. 매장 테이블
매장코드 | 매장명 |
B1 | 매장1 |
B2 | 매장2 |
B3 | 매장3 |
B4 | 매장4 |
4. 판매 테이블
상품코드 | 매장코드 | 판매수량 | 공급가 | 부가세 | 판매일 |
이렇게 4개의 테이블에서 매출현황을 리포트해 주어야하데 원하는 형식이 좀 특이합니다.ㅜㅜ
(2015-04-05 매출통계)
구분 | 가방 | 장비 | 의류/잡화 | 홈데코 | 액세서리 | 일계 | 월계 | 년계 | ||||
금액 | 부가세 | 금액 | 부가세 | 금액 | 부가세 | |||||||
상품 | 매장1 | |||||||||||
매장2 | ||||||||||||
매장3 | ||||||||||||
매장4 | ||||||||||||
일계 | ||||||||||||
월계 | ||||||||||||
년계 |
어떻게 쿼리를 해야할지 도무지 감이 안잡힙니다. 본인이 만든건 아니고 기존에 있는 데이터를 가지고 리포팅만 뽑아달라고 요청이 들어왔는데. 완전 디비 초짜라.............
작은 조언도 저에겐 큰 힘이됩니다. 감사합니다.
소계/합계를 떠나 먼저 유사 형태로 SQL를 만드셔야 할 것 같은데,
01. 자료 구조(=테이블) 성격상 표측으로 되어 있는 부분을 표두 쪽으로 설정
02. 표두 일계/월계/년계 산출
03. 01/02를 통해 나온 테이블과 매장 테이블 조인하여 기존 결과 매장별 세분화
04. 최종 행단위 일계/월계/년계 산출
====================================
구체적 답을 얻고 싶으시다면 테이블별 샘플 데이타를 가상 테이블 형식(WITH AS [TABLE_NAME]...)으로 올려주시면 많은 분들이 도움을 드릴 수 있을 것 같습니다.
WITH 조건 AS ( SELECT 1 lv, '' gb, '2015' c, '20150405' c0, '20150405' c1, , '201504' c2, '2015' c3 FROM dual UNION ALL SELECT 2, '일계', '20150405', '20150405', '20150405', 'x' , 'x' FROM dual UNION ALL SELECT 3, '월계', '201504' , '201504' , 'x' , '201504', 'x' FROM dual UNION ALL SELECT 4, '년계', '2015' , '2015' , 'x' , 'x' , '2015' FROM dual ) SELECT NVL(a.gb, d.매장명) 구분 , SUM(CASE WHEN b.판매일 LIKE c0||'%' AND c.카테고리 = 'A5' THEN b.공급가 END) "가방" , SUM(CASE WHEN b.판매일 LIKE c0||'%' AND c.카테고리 = 'A4' THEN b.공급가 END) "장비" , SUM(CASE WHEN b.판매일 LIKE c0||'%' AND c.카테고리 = 'A1' THEN b.공급가 END) "의류/잡화" , SUM(CASE WHEN b.판매일 LIKE c0||'%' AND c.카테고리 = 'A2' THEN b.공급가 END) "홈데코" , SUM(CASE WHEN b.판매일 LIKE c0||'%' AND c.카테고리 = 'A3' THEN b.공급가 END) "액세서리" , SUM(CASE WHEN b.판매일 LIKE c1||'%' THEN b.공급가 END) 일계_공급가 , SUM(CASE WHEN b.판매일 LIKE c1||'%' THEN b.부가세 END) 일계_부가세 , SUM(CASE WHEN b.판매일 LIKE c2||'%' THEN b.공급가 END) 월계_공급가 , SUM(CASE WHEN b.판매일 LIKE c2||'%' THEN b.부가세 END) 월계_부가세 , SUM(CASE WHEN b.판매일 LIKE c3||'%' THEN b.공급가 END) 년계_공급가 , SUM(CASE WHEN b.판매일 LIKE c3||'%' THEN b.부가세 END) 년계_부가세 FROM 조건 a , 판매 b , 상품 c , 매장 d WHERE b.상품코드 = c.상품코드 AND b.매장코드 = d.매장코드 AND b.판매일 LIKE a.c || '%' GROUP BY a.lv , NVL(a.gb, b.매장코드) , NVL(a.gb, d.매장명) ORDER BY a.lv , NVL(a.gb, b.매장코드) ;