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 39463 게시물 읽기
No. 39463
한테이블의 한줄의 데이터로 통계만들기
작성자
하수
작성일
2012-05-24 17:07ⓒ
2012-05-24 18:00ⓜ
조회수
4,530

통계 데이터를 만들고있다가 궁금한점이 있어 고수분들께
질문드립니다..

테이블의데이터가

품목 지역 1월 2월 3월~~~ 12월 (헤더)
사과 대구 10  20  30 ~~~~  50
사과 대전 20 10 30    ~~~  20
사과 대구 10  40  20 ~~~~  50
포도 서울 50 20 10  ~~~~~40

이런식으로있습니다.
만들어야할 화면은
(조회조건 : 품목, 기간-- 사과, 2~3월로 했을때)

품목 서울 대전 대구 합계 (헤더)
사과  0       40    110  150

이렇게 나와야합니다.

삽질중인데 뚜렷이 답이 안나오네요...

읽어주셔서 감사합니다!
 

   WITH t AS

(

SELECT '품목' a ,'지역' b , 1 c,2 d, 3  e, 4 f, 5 g, 6 h, 7 i,8 j, 9 k,10 l,11 m,12  n FROM dual

UNION ALL SELECT '사과', '대구', 10,20,30,0,0,0,0,0,0,0,0,0 FROM dual

UNION ALL SELECT '사과', '대전', 20,10,30,0,0,0,0,0,0,0,0,0 FROM dual

UNION ALL SELECT '사과', '대구', 10,40,20,0,0,0,0,0,0,0,0,0 FROM dual

UNION ALL SELECT '포도', '서울', 50,20,10,0,0,0,0,0,0,0,0,0  FROM dual

)

이런식으로 테이블이 되어있습니다

 

이 글에 대한 댓글이 총 1건 있습니다.

WITH t(item, loc
, m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11, m12
) AS
(
SELECT '사과', '대구', 10, 20, 30, 0,0,0,0,0,0,0,0,0 FROM dual
UNION ALL SELECT '사과', '대전', 20, 10, 30, 0,0,0,0,0,0,0,0,0 FROM dual
UNION ALL SELECT '사과', '대구', 10, 40, 20, 0,0,0,0,0,0,0,0,0 FROM dual
UNION ALL SELECT '포도', '서울', 50, 20, 10, 0,0,0,0,0,0,0,0,0 FROM dual
)
SELECT *
  FROM (
        SELECT item
             , NVL(loc, '합계') loc
             , SUM(cnt) cnt
          FROM t
         UNPIVOT (cnt FOR mm IN ( m01 AS  1
                                , m02 AS  2
                                , m03 AS  3
                                , m04 AS  4
                                , m05 AS  5
                                , m06 AS  6
                                , m07 AS  7
                                , m08 AS  8
                                , m09 AS  9
                                , m10 AS 10
                                , m11 AS 11
                                , m12 AS 12 ) )
         WHERE item = '사과'
           AND mm BETWEEN 2 AND 3
         GROUP BY item, ROLLUP(loc)
        )
 PIVOT (SUM(cnt) FOR loc IN ( '서울' 서울
                            , '대전' 대전
                            , '대구' 대구
                            , '합계' 합계 ) )
;

마농(manon94)님이 2012-05-25 16:42에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39467초보 질문드려요^^ uninstall 하는법 [1]
임서희
2012-05-27
3346
39466PROC 에서 VARRAY를 어떤방식으로 가져오나요.
질문자
2012-05-26
3743
39464CASE WHEN 은 한건씩만 처리되나요? [2]
질문
2012-05-24
4190
39463한테이블의 한줄의 데이터로 통계만들기 [1]
하수
2012-05-24
4530
39462오라클 Deadlock 관련 질문 드립니다. [1]
임종균
2012-05-24
3796
39461[초보] 100건씩 증가 될수 있는 프로시져 생성문을 요청 드립니다. [1]
하승철
2012-05-23
3988
39459방화벽 외부 서버에서 내부오라클DB로 접속이 안됩니다..
초보자
2012-05-22
4097
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다