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 39542 게시물 읽기
No. 39542
누적 금액 관련 쿼리 문의
작성자
진희(byulst)
작성일
2012-07-16 14:45
조회수
5,692

안녕하세요. 쿼리 문의 드립니다.

가지고 있는 데이터는 아래와 같고요. (수금일자 / 실제수금일 / 수금예상금액)

plan date / receipt date  / plan money
20071110 / 20080410   /   1000    
20071210 / 20080410   /   1000    
20080110 / 20080410   /   1000       
20080210 / 20080410   /   1000    
20080310 / 20080410   /   1000    
20080410 / 20080410   /   1000    
20080510 / 20080513   /   1000    
20080610 / 20080610   /   1000    
20080710 / 20080710   /   1000    
20080810 / 20080811   /   1000    
20080910 / 20080910   /   1000    
20081010 / 20081010   /   1000    
20081110 / 20081110   /   1000    
20081210 / 20081210   /   1000    
20090110 / 20090112   /   1000    
20090210 / 20090210   /   1000    
20090310 / 20090310   /   1000    
20090410 / 20090410   /   1000    
20090510 / 20090601   /   1000    
20090610 / 20090610   /   1000    
20090710 / 20090710   /   1000    
20090810 / 20090810   /   1000    

아래와 같이 데이터를 뽑고 싶습니다. (수금일자 / 연체금액)

plan date   / 연체금액
20071110     1000 
20071210     2000 
20080110     3000 
20080210     4000 
20080310     5000 
20080410     0 
20080510     0    
20080610     0    
20080710     0    
20080810     0    
20080910     0    
20081010     0    
20081110     0    
20081210     0    
20090110     0    
20090210     0    
20090310     0    
20090410     0    
20090510     1000 
20090610     0 
20090710     0    
20090810     0    

이렇게 뽑는게 가능할까요?

부탁드려요 ㅠ.ㅠ

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

select p_date,
       nvl(sum(decode(substr(p_date,1,6), substr(r_date,1,6), null, p_money)) over (partition by decode(substr(p_date,1,6), substr(r_date,1,6), null, r_date) 
                                                                                    order by p_date), 0) aa
  from t
 order by p_date

손님님이 2012-07-16 18:29에 작성한 댓글입니다.
이 댓글은 2012-07-16 18:33에 마지막으로 수정되었습니다. Edit

WITH MONEY AS
(
    SELECT '20071110' AS PLAN_DT, '20080410' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20071210' AS PLAN_DT, '20080410' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20080110' AS PLAN_DT, '20080410' AS RECP_DT, 1000 AS VAL UNION ALL     
    SELECT '20080210' AS PLAN_DT, '20080410' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20080310' AS PLAN_DT, '20080410' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20080410' AS PLAN_DT, '20080410' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20080510' AS PLAN_DT, '20080513' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20080610' AS PLAN_DT, '20080610' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20080710' AS PLAN_DT, '20080710' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20080810' AS PLAN_DT, '20080811' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20080910' AS PLAN_DT, '20080910' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20081010' AS PLAN_DT, '20081010' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20081110' AS PLAN_DT, '20081110' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20081210' AS PLAN_DT, '20081210' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20090110' AS PLAN_DT, '20090112' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20090210' AS PLAN_DT, '20090210' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20090310' AS PLAN_DT, '20090310' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20090410' AS PLAN_DT, '20090410' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20090510' AS PLAN_DT, '20090601' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20090610' AS PLAN_DT, '20090610' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20090710' AS PLAN_DT, '20090710' AS RECP_DT, 1000 AS VAL UNION ALL  
    SELECT '20090810' AS PLAN_DT, '20090810' AS RECP_DT, 1000 AS VAL 
)
SELECT A.PLAN_DT
     , SUM(A.VAL)
     , SUM(CASE WHEN B.RECP_DT <= A.PLAN_DT THEN A.VAL ELSE 0 END) RECP_VAL
     , SUM(A.VAL) - SUM(CASE WHEN B.RECP_DT <= A.PLAN_DT THEN A.VAL ELSE 0 END) RECP_VAL
  FROM MONEY A, MONEY B
 WHERE A.PLAN_DT >= B.PLAN_DT
 GROUP BY A.PLAN_DT
 ORDER BY A.PLAN_DT

박성재(yamayama)님이 2012-07-25 10:42에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39546오라클 시작일 종료일 받아와 주차구하기 [2]
오라초
2012-07-17
7660
39545Table access 순서와 table access path(방식)에 대해 질문 있습니다.^^
얄록
2012-07-17
4453
39543조회할때 한row에 추가로 3row를 더 넣고싶습니다. [1]
초보..
2012-07-16
4626
39542누적 금액 관련 쿼리 문의 [2]
진희
2012-07-16
5692
39541비어 있는 값 추출 관련 도움요청합니다. [1]
김정묵
2012-07-13
5388
39540오라클 blob필드에 이미지를 insert하고자 합니다. [1]
김승일
2012-07-13
5319
39538부분합계금액을 구하려면.. [1]
김인환
2012-07-12
6334
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다