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 41274 게시물 읽기
No. 41274
증감율 구하기 질문 드립니다.
작성자
량디(fidele)
작성일
2016-11-02 11:10ⓒ
2016-11-02 11:34ⓜ
조회수
7,089

년월 입고 출고 반품

201501 10 3 2

201502 20 4 3

201503 15 5 5

..

.. ..

201401 3 2 2

201402 10 4 3

201403 15 3 3

 

 

위와같은 데이타를 아래와 같은 형식으로 뽑고자 합니다.

한쿼리로 가능한 함수가 있으면 도움 부탁드립니다.

 

1월 2월 3월 ......

2015년 입고 10 20 15

출고 3 4 5

반품 2 3 5

합계 15 27 25

2014년 입고 3 10 15

출고 2 4 3

반품 2 3 3

합계 7 17 21

증감수량 입고 7 10 0

출고 1 0 2

반품 0 0 2

합계 8 10 4

증감률 입고 330% 20 15

출고 3 4 5

반품 2 3 5

합계 15 27 25

 

 

 

 

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

WITH 테이블 AS
(
SELECT '201501' 연월, 10 입고, 3 출고, 2 반품 FROM dual
UNION ALL SELECT '201502', 20, 4, 3 FROM dual
UNION ALL SELECT '201503', 15, 5, 5 FROM dual
UNION ALL SELECT '201401',  3, 2, 2 FROM dual
UNION ALL SELECT '201402', 10, 4, 3 FROM dual
UNION ALL SELECT '201403', 15, 3, 3 FROM dual
)
SELECT 연도
     , 구분
     , "01", "02", "03"
     , "04", "05", "06"
     , "07", "08", "09"
     , "10", "11", "12"
  FROM (SELECT m, 구분
             , "2015" , "2014"
             , "2015" - "2014" 증감수량
             , ROUND(("2015" - "2014") / NULLIF("2014", 0) * 100) 증감률
          FROM (SELECT SUBSTR(연월, 1, 4) y
                     , SUBSTR(연월, 5, 2) m
                     , 입고 , 출고 , 반품
                     , 입고 + 출고 + 반품 합계
                  FROM 테이블
                 WHERE 연월 BETWEEN '201401' AND '201512'
                )
         UNPIVOT(v FOR 구분 IN (입고, 출고, 반품, 합계))
         PIVOT(MIN(v) FOR y IN (2015, 2014))
        )
 UNPIVOT(v FOR 연도 IN ("2015", "2014", "증감수량", "증감률"))
 PIVOT (SUM(v) FOR m IN ( '01' "01", '02' "02", '03' "03"
                        , '04' "04", '05' "05", '06' "06"
                        , '07' "07", '08' "08", '09' "09"
                        , '10' "10", '11' "11", '12' "12"
                        ) )
 ORDER BY INSTR('2015,2014,증감수량,증감률', 연도)
        , INSTR('입고,출고,반품,합계', 구분)
;

마농(manon94)님이 2016-11-02 13:42에 작성한 댓글입니다.

와 ... 어렵습니다.

이런 함수를 응용하는 방법도 있었네요...

답변 감사드립니다.  확인해 보도록 하겠습니다.

량디(fidele)님이 2016-11-02 18:05에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41277질문 다시 올립니다. [5]
최종욱
2016-11-04
6896
41276정렬 관련 문의 [1]
또하루
2016-11-03
6655
41275누적 쿼리. [2]
최종욱
2016-11-03
6952
41274증감율 구하기 질문 드립니다. [2]
량디
2016-11-02
7089
41273하루 6천만건의 데이터 생성 - 월 20억건의 데이터 발생
김대일
2016-11-01
6468
41272쿼리에서 빈값 넣기 방법좀 알려주세요. [2]
모던
2016-11-01
7389
41271ODBC 고수분들 답변 좀 부탁 드립니다.
그노그노
2016-10-26
6679
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다