database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41269 게시물 읽기
No. 41269
일자별 집계 쿼리 문의
작성자
이담원
작성일
2016-10-26 07:16ⓒ
2016-10-26 07:17ⓜ
조회수
6,735
안녕하세요.
 
일자별로 영업장별, 품목별로 판매건수 및 매출금액을 집계한 일별판매품목집계 테이블에 아래처럼 데이터가 있습니다.
 
 
일자     영업장    품목     판매건수     매출금액
20161001 영업장1   정육         1          100
20161001 영업장1   주류         2          200
20161001 영업장1   야채         3          200
20161001 영업장2   정육         2          100
20161001 영업장2   주류         3          300
20161001 영업장2   야채         4          500
20161002 영업장1   정육         2          100
20161002 영업장1   주류         1          200
20161002 영업장1   야채         5          200
20161002 영업장2   정육         1          100
20161002 영업장2   주류         4          300
....
 
20161031 영업장2  정육          1          100
 
 
보여줄 결과는 아래 2가지 처럼 보이게 하고 싶은데요
일단 각 영업장별, 품목별로는 쿼리를 하여 프로그램에서 아래처럼 보이게 하였습니다만
구분을 건수, 금액별로 row를 따로 보여주는 것을 모르겠습니다.
 
 
* 10월 일별통계 결과1
 
영업장   품목             구분             1         2         3      4       5 ....    31  합계
영업장1  정육            판매건수     1         2        1       5       2
                                     매출금액    100    100    100
                 주류            판매건수    2         1         3       1      3
                                     매출금액    200    200      ...
                 야채            판매건수    3         5         3       1      3
                                     매출금액    300    200      ...
영업장1소계               판매건수     6         8
                                     매출금액     600     500
영업장1    정육           판매건수    2          1        1      5       2
                                     매출금액    100     100    100
                   주류          판매건수    3          4      3       1      3
                                     매출금액    300     300      ...
                   야채          판매건수    4          5      3       1      3
                                     매출금액    500     200      ...
영업장2소계               판매건수    9         10
                                      매출금액    900    600    ...        
영업장총계                  판매건수    15        18     ...
                                      매출금액    1500   1100   ...
 
*10월1~31까지 통계결과2
영업장            구분            정육     주류      야채 ... 합계
영업장1        판매건수      3           3           8           14
                      매출금액      200       500       400       1100
영업장2        판매건수      3            7           4           14
                      매출금액      200        600       500       1300
영업장합계  판매건수      6           10        12        28
                      매출금액      400       1100      900       2400
 
부디 고수님들의 조언을 부탁드립니다.
 
 
이 글에 대한 댓글이 총 2건 있습니다.

WITH t AS
(
SELECT '20161001' dt, '영업장1' store, '정육' item, 1 cnt, 100 amt FROM dual
UNION ALL SELECT '20161001', '영업장1', '주류', 2, 200 FROM dual
UNION ALL SELECT '20161001', '영업장1', '야채', 3, 200 FROM dual
UNION ALL SELECT '20161001', '영업장2', '정육', 2, 100 FROM dual
UNION ALL SELECT '20161001', '영업장2', '주류', 3, 300 FROM dual
UNION ALL SELECT '20161001', '영업장2', '야채', 4, 500 FROM dual
UNION ALL SELECT '20161002', '영업장1', '정육', 2, 100 FROM dual
UNION ALL SELECT '20161002', '영업장1', '주류', 1, 200 FROM dual
UNION ALL SELECT '20161002', '영업장1', '야채', 5, 200 FROM dual
UNION ALL SELECT '20161002', '영업장2', '정육', 1, 100 FROM dual
UNION ALL SELECT '20161002', '영업장2', '주류', 4, 300 FROM dual
UNION ALL SELECT '20161031', '영업장2', '정육', 1, 100 FROM dual
)


SELECT NVL(store, '총계') store
     , DECODE(GROUPING_ID(store, item), 0, item, 1, '소계') item
     , gb
     , SUM(DECODE(dd, '01', v)) "01"
     , SUM(DECODE(dd, '02', v)) "02"
       -- 중략 --
     , SUM(DECODE(dd, '31', v)) "31"
     , SUM(v) 합계
  FROM (SELECT SUBSTR(dt, 7) dd
             , store, item, cnt, amt
          FROM t
         WHERE dt LIKE '201610%'
        )
 UNPIVOT (v FOR gb IN (cnt AS '판매건수', amt AS '매출금액')) a
 GROUP BY ROLLUP(store, item), gb
 ORDER BY a.store, a.item, a.gb DESC
;


SELECT NVL(store, '합계') store
     , gb
     , SUM(DECODE(item, '정육', v)) "정육"
     , SUM(DECODE(item, '주류', v)) "주류"
     , SUM(DECODE(item, '야채', v)) "야채"
       -- 중략 --
     , SUM(v) 합계
  FROM (SELECT store, item, cnt, amt
          FROM t
         WHERE dt LIKE '201610%'
        )
 UNPIVOT (v FOR gb IN (cnt AS '판매건수', amt AS '매출금액')) a
 GROUP BY ROLLUP(store), gb
 ORDER BY a.store, a.gb DESC
;

마농(manon94)님이 2016-10-26 08:51에 작성한 댓글입니다.

 마농님 정성스런 답변 감사합니다!!!

 

이담원님이 2016-10-27 06:24에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41272쿼리에서 빈값 넣기 방법좀 알려주세요. [2]
모던
2016-11-01
6780
41271ODBC 고수분들 답변 좀 부탁 드립니다.
그노그노
2016-10-26
6166
41270기준값에 대한 정렬, 부탁좀 드려봅니다. [6]
기쁨이
2016-10-26
6635
41269일자별 집계 쿼리 문의 [2]
이담원
2016-10-26
6735
41268게시판 파일첨부 소스 질문입니다 ㅜㅜ
문종훈
2016-10-25
6077
41267시작,종료일자 겹치는 구간에 대해 문의 드려요 [2]
김준수
2016-10-25
6311
41266개인 법인 구분 [1]
chen
2016-10-24
6130
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.047초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다