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
운영게시판
최근게시물
DB2 Q&A 3067 게시물 읽기
No. 3067
누계차감하는 db2로 쿼리좀 알려주세요..
작성자
김영주(icecream74)
작성일
2011-08-23 21:20
조회수
7,310

테이블1 총금액    
  3,000,000    
       
테이블2 계좌번호 거래년월일 거래금액
  55784006501   2001-10-02 10,000
  55784006501   2001-10-03 20,000
  55784006501   2001-11-05 10,000
  55784006501   2001-12-04 30,000

두 테이블를 가지고 누적차감합계를 내려고 하는데 너무 어려워서요

밑에처럼 데이타가 나올수 있도록 쿼리문좀 알려주시면...감사하겠습니다..

너무 어렵네요..고수님들....도움주세요..

결과값 계좌번호 거래년월일 거래금액 누계금액 차감누계값          
  55784006501   2001-10-02 10,000 10000 2990000 3,000,000 - (10,000)    
  55784006501   2001-10-03 20,000 30000 2970000 3,000,000 - (10,000 + 20,000)    
  55784006501   2001-11-05 10,000 40000 2960000 3,000,000 - (10,000 + 20,000 + 10,000)  
  55784006501   2001-12-04 30,000 70000 2930000 3,000,000 - (10,000 + 20,000 + 10,000 + 30,000)

 

 

 

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

 

SELECT PYBCK_DT
   , ACCT_MGT_NO
   , SUM_GRNT_AMT
   , OVER_SUM_GRNT_AMT
   , 30000000 - OVER_SUM_GRNT_AMT
FROM (    
SELECT  A.PYBCK_DT
        , A.ACCT_MGT_NO
        , SUM(GRNT_AMT) AS SUM_GRNT_AMT
        , (SELECT SUM(GRNT_AMT) FROM party.BSCR_GRNT_DOC_SBRATE_DTL WHERE ACCT_MGT_NO = '22073035459' AND PYBCK_DT <= A.PYBCK_DT ) AS OVER_SUM_GRNT_AMT
  FROM  party.BSCR_GRNT_DOC_SBRATE_DTL A 
 WHERE  A.ACCT_MGT_NO = '22073035459' 
 GROUP  BY PYBCK_DT, ACCT_MGT_NO
 ) s

구현을 해봤는데 db2에서는 스칼라 쿼리가 먹히질 않습니다.

(SELECT SUM(GRNT_AMT) FROM party.BSCR_GRNT_DOC_SBRATE_DTL WHERE ACCT_MGT_NO = '22073035459' AND PYBCK_DT <= A.PYBCK_DT ) AS OVER_SUM_GRNT_AMT
 

이부분을 db2로 구현하고자 할때 어떻게 해야하는지 도움주세요...

 

김영주(icecream74)님이 2011-08-25 11:47에 작성한 댓글입니다.

 


with TA (C1,C2,C3) AS
(VALUES
  ('55784006501', '2001-10-02', 10000)
 ,('55784006501', '2001-10-03', 20000)
 ,('55784006501', '2001-11-05', 10000)
 ,('55784006501', '2001-12-04', 30000) )

,TB(Ca) AS (VALUES 3000000)

select *
from (
select c1 계좌번호 ,max(c2) over(partition by t2.RN) 거래년월일
       ,case when t1.rn = t2.rn then c3 end 거래금액
       ,sum(c3) over(PARTITION by t2.rn) 누계금액,  ca - sum(c3) over(PARTITION by t2.rn) 차감누계값
from ( select c1,c2,c3, row_number() over(PARTITION by c1 order by c2 desc) rn, ca from ta, tb ) t1, (select rownum rn from syscat.tables where rownum<20) t2
where t2.rn <= t1.rn
order by 2
) where 거래금액 is not null

계좌번호 거래년월일 거래금액 누계금액 차감누계값
55784006501 2001-10-02 10000 10000 2990000
55784006501 2001-10-03 20000 30000 2970000
55784006501 2001-11-05 10000 40000 2960000
55784006501 2001-12-04 30000 70000 2930000

 

조는 냥이님이 2011-08-26 18:03에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3070CURRENT_TIMESTAMP 에 타입을 주는 방법 [4]
김영주
2011-08-23
6100
3069전월의 마지막일자를 구하는방법 [1]
김영주
2011-08-23
6986
3068계좌번호별로 변경일자를 다시 재조합하는 쿼리문 [2]
김영주
2011-08-23
5473
3067누계차감하는 db2로 쿼리좀 알려주세요.. [2]
김영주
2011-08-23
7310
3065월을 영어로 추출하고 싶어요
김정숙
2011-08-04
6010
3064문자 비교 [2]
김정숙
2011-07-14
5415
3063DB2에서 현재 시간을 시스템시간이 아닌 다른 임의의 값으로 가져오고 싶습니다. [1]
유기석
2011-07-01
6026
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다