2014-10-29 2 views
0

환경은 z/OS DB2입니다. 아래 표의 데이터가 있습니다.SQL의 열 요약

 Year  Amount 

    1998  2000 
    1999  3000 
    2000  2500 
    2001  10000 

다음과 같은 결과가 필요합니다. 다음과 같이 결과가 있어야한다 :

 Year  Amount Total_Amount_Invested 

    1998  2000  2000 
    1999  3000  5000 
    2000  2500  7500 
    2001  10000  17500 

는이 점에서 당신의 도움을 주셔서 감사합니다.

답변

1

누적 합계 계산이라고합니다. 하나의 더미 함수를 만들었습니다.이 기능을 통해이 아이디어를 얻을 수 있기를 바랍니다. 당신은 당신이 사용하여 작업을 수행 할 수 있습니다 원하는 경우

create table Test 
(
    year int, 
    amount int 
) 

insert into Test (year,amount) 
values 
(1998,2000), 
(1999,3000), 
(2000,2500), 
(2001,10000) 

select 
    t1.year, 
    sum(t2.amount) 
from 
    Test t1 
    join test t2 
    ON T2.year <= T1.year 
group by 
T1.year 

가 나는 당신의 합계를 계산하는 올해의 concidered 한 기본 키

당신이 내가 만든 데모입니다 SQL 바이올린 으로 확인할 수 있습니다. DEMO Click to see

+1

@Shiva Komuravelly을 알려주세요 내 쿼리 예는했고, 나는 그것을 사용했다 –

+0

당신을 helpd 여부 wheather를. –

1

대안은 OLAP functions을 사용하는 것입니다 :

declare global temporary table session.test (
    year int 
    ,amount int 
) ON COMMIT PRESERVE ROWS; 

insert into session.test (year,amount) 
    SELECT 1998,2000 FROM SYSIBM.SYSDUMMY1 UNION ALL 
    SELECT 1999,3000 FROM SYSIBM.SYSDUMMY1 UNION ALL 
    SELECT 2000,2500 FROM SYSIBM.SYSDUMMY1 UNION ALL 
    SELECT 2001,10000 FROM SYSIBM.SYSDUMMY1 
; 

SELECT 
    year 
    ,sumamt 
    ,sum(sumamt) OVER (ORDER BY year ROWS UNBOUNDED PRECEDING) 
FROM (
    select 
     year 
     ,sum(amount) AS SUMAMT 
    from session.test t1 
    GROUP BY year 
) A 
;