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 39538 게시물 읽기
No. 39538
부분합계금액을 구하려면..
작성자
김인환(niggler)
작성일
2012-07-12 11:11ⓒ
2012-07-12 14:52ⓜ
조회수
6,335

A 라는 테이블의 ROW데이터
기준월   사무소   금액
201001 10   100
201001 20   200
201002 10    50
201002 20   150
201003 10   200
201003 20   200
201004 10   150
201004 20   100

위의 데이터를 아래와 같이 만들려고 합니다.
기준월을 포함하여 과거3개월간의 금액의 합계를  
기준월별,사무소별로 보여주는겁니다.    
이렇게 저렇게 해봤는데 잘안되네요..    
답변부탁드립니다.

목적테이블 결과 데이터
기준월   사무소   금액
201001 10   100       
201001 20   200  
201002 10   150  
201002 20   350  
201003 10   350  
201003 20   550  
201004 10   400  
201004 20   450


기준월 201001 , 사무소 10 기준으로는  200911,200912,201001 사무소 10의 금액의 합인 100원 (200911,200912은 데이터가 없으므로 201001 데이타만)
기준월 201001 , 사무소 20 기준으로는  200911,200912,201001 사무소 20의 금액의 합인 200원 (200911,200912은 데이터가 없으므로 201001 데이타만)
기준월 201002 , 사무소 10 기준으로는  200912,201001,201002 사무소 10의 금액의 합인 150원 (200912은 데이터가 없으므로 201001 201002 데이타만)
기준월 201002 , 사무소 20 기준으로는  200912,201001,201002 사무소 20의 금액의 합인 350원 (200912은 데이터가 없으므로 201001 201002 데이타만)
기준월 201003 , 사무소 10 기준으로는  201001,201002,201003 사무소 10의 금액의 합인 350원
기준월 201003 , 사무소 20 기준으로는  201001,201002,201003 사무소 20의 금액의 합인 550원 
기준월 201004 , 사무소 10 기준으로는  201002,201003,201004 사무소 10의 금액의 합인 400원
기준월 201004 , 사무소 20 기준으로는  201002,201003,201004 사무소 20의 금액의 합인 450원

다시 말하면 기준월을 기준으로 과거3개월치이 금액의 합계를 보여주고 싶습니다.
설명이 부족하면 다시말씀해주세요..
 

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

with tab(f_month,f_office,f_money) as (
select '201001','10',100 from dual union all
select '201001','20',200 from dual union all
select '201002','10', 50 from dual union all
select '201002','20',150 from dual union all
select '201003','10',200 from dual union all
select '201003','20',200 from dual union all
select '201004','10',150 from dual union all
select '201004','20',100 from dual
)
select f_month, f_office, f_money, grp_money - nvl(three_month_minus,0) as new_f_money from (
    select m.f_month, m.f_office, m.f_money,
    sum(m.f_money) over (partition by m.f_office order by m.f_month, m.f_office) as grp_money,
    (select sum(s.f_money) from tab s where s.f_month <= m.f_month-3 and s.f_office=m.f_office) as three_month_minus
    from tab m
    order by m.f_month, m.f_office
)

황준선(okclick)님이 2012-07-25 17:22에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39542누적 금액 관련 쿼리 문의 [2]
진희
2012-07-16
5692
39541비어 있는 값 추출 관련 도움요청합니다. [1]
김정묵
2012-07-13
5389
39540오라클 blob필드에 이미지를 insert하고자 합니다. [1]
김승일
2012-07-13
5319
39538부분합계금액을 구하려면.. [1]
김인환
2012-07-12
6335
39537가로로 합계내기 [1]
질문자
2012-07-11
6104
39536SQL 쿼리 질문입니다(마농님 좀 도와주세요 ㅠ) [1]
김병두
2012-07-11
5105
39535group by rollup 했더니 같은 row가 2개씩 생겨요.. [2]
하수
2012-07-10
5908
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다