2014-10-29 2 views
0

에 날짜 바인딩 누적 합계 구하기 수 : 나는 어디에 절을 얻고 무엇을나는 회계 항목의 실행 균형을 얻기 위해 다음과 같습니다 PostgreSQL을 9.3에서 실행되는 데이터베이스 쿼리를 PostgreSQL을

id | date   | amount | running balance 
1 2014-01-01  10   10 
2 2014-01-02  10   20 

:

id | date   | amount | running balance 
2 2014-01-02  10   10 

이 쿼리는 날짜 범위 (위의 설명 된 비트)로 필터링을 시도해도 올바른 결과를 반환하도록하려면 어떻게해야합니까?

+0

Postgres 버전? –

+0

입력 데이터 및 예상 결과의 예도 표시 할 수 있습니까? –

+0

(포스트그레스 버전 및 샘플 데이터에 대한 질문이 업데이트 됨) – wwadge

답변

1

먼저 모든 데이터에 대해 실 행 잔액을 선택하고 계산 한 다음 절을 바깥 쪽 SELECT에 넣어야합니다.

SELECT 
    * 
FROM 
    (SELECT 
    *, 
    SUM(amount) OVER (
     PARTITION BY 
     ae.account_id 
     ORDER BY 
     ae.date_posted, 
     ae.account_id 
    ) AS formula0_1_ 
    FROM 
    account_entry AS ae) AS total 
WHERE 
    total.date_posted > '2014-01-01' 
ORDER BY 
    account_id DESC, 
    date_posted ASC;