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 40285 게시물 읽기
No. 40285
쿼리 질문드려욤. 도와주세요
작성자
추재현(cjh0840)
작성일
2013-10-16 23:25ⓒ
2013-10-17 00:10ⓜ
조회수
5,884

안녕하세요.

초보여서 쿼리를 짜는데 어떻게 해야할지 감이 안와 질문드립니다.

우선 T_PROAMT라는 테이블에

code, amt1, amt2, amt3, amt4, amt5, amt6, amt7, amt8, amt9, amt10, amt11, amt12 컬럼들이 있고

 

 

code amt1 amt2 amt3 amt4 amt5 amt6 amt7 amt8 amt9 amt10 amt11 amt12

A 100 100 100 100 100 100 100 100 100 100 100 100

A null 100 100 100 100 100 100 100 100 100 100 100

A 100 100 100 100 100 100 100 100 100 100 100 100

B 100 null 100 100 100 100 100 100 100 100 100 100

B 100 100 100 100 100 100 100 100 100 100 100 100

C 100 100 100 100 100 100 100 100 100 100 100 100

C 100 100 null 100 100 100 100 100 100 100 100 100

 

예를 들어 이테이블을 조회하여 위와 같은 데이터가 나온다고 가정하에

코드값으로 group by하여 월별 건수와 금액을 구하는 쿼리를 짜려 합니다.

 

편의상 1,2,3월만 셈플로 살펴보자면

code amt1 amt2 amt3

A 100 100 100

A 100 100

A 100 100 100

B 100 100

B 100 100 100

C 100 100 100

C 100 100

 

 

A의 1월 건수는 2건, 금액은 200

A의 2월 건수는 3건, 금액은 300

A의 3월 건수는 3건, 금액은 300

 

B의 1월 건수는 2건, 금액은 200

B의 2월 건수는 1건, 금액은 100

B의 3월 건수는 2건, 금액은 200

 

C의 1월 건수는 2건, 금액은 200

C의 2월 건수는 2건, 금액은 200

C의 3월 건수는 1건, 금액은 100

 

이런식으로 아래와 같은 형태로 데이터를 도출하려면 쿼리를 어떻게 짜야할지 쿼리 고수님들 도와 주세요~~~

 

구분 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월

A(건수) 2 3 3 ... ... ... ... ... ... ... ... ...

B(건수) 2 1 2 ... ... ... ... ... ... ... ... ...

C(건수) 2 2 1 ... ... ... ... ... ... ... ... ...

A(금액) 200 300 300 ... ... ... ... ... ... ... ... ...

B(금액) 200 100 200 ... ... ... ... ... ... ... ... ...

C(금액) 200 200 100 ... ... ... ... ... ... ... ... ...

 

이 글에 대한 댓글이 총 2건 있습니다.
WITH t(code, amt1, amt2, amt3) AS(
SELECT 'A',  100,  100,  100 FROM dual UNION ALL
SELECT 'A', null,  100,  100 FROM dual UNION ALL
SELECT 'A',  100,  100,  100 FROM dual UNION ALL
SELECT 'B',  100, null,  100 FROM dual UNION ALL
SELECT 'B',  100,  100,  100 FROM dual UNION ALL
SELECT 'C',  100,  100,  100 FROM dual UNION ALL
SELECT 'C',  100,  100, null FROM dual
)
SELECT code||DECODE(lv, 1, '(건수)', '(금액)') code
     , DECODE(lv, 1, cnt1, sum1) amt1
     , DECODE(lv, 1, cnt2, sum2) amt2
     , DECODE(lv, 1, cnt3, sum3) amt3
     -- 12월까지 추가...
  FROM (SELECT code
             , COUNT(amt1) cnt1, COUNT(amt2) cnt2, COUNT(amt3) cnt3
             , SUM(amt1) sum1, SUM(amt2) sum2, SUM(amt3) sum3
             -- 12월까지 추가...
          FROM t
         GROUP BY code
        ) a
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 2) d     
 ORDER BY lv, code     
 
 
아린(arin76)님이 2013-10-17 11:45에 작성한 댓글입니다.
이 댓글은 2013-10-17 11:46에 마지막으로 수정되었습니다.

 아린님 도와주셔서감사사합니다

추재현(cjh0840)님이 2013-10-17 19:41에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40288query 질문이염...ㅜㅜ [2]
효효효
2013-10-24
6342
40287날짜 계산 질문 드립니다.. [2]
햇살한조각
2013-10-22
6651
40286pl/sql dynamic field 문의드립니다.
전규철
2013-10-18
6516
40285쿼리 질문드려욤. 도와주세요 [2]
추재현
2013-10-16
5884
40284전날 전월 전년도 데이터 뽑는 쿼리 [5]
궁금
2013-10-16
8195
40283안녕하세요 오라클 ping fail 에러가 떠요.
김승환
2013-10-16
7218
40282쿼리 질문 [2]
권순민
2013-10-15
5901
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다