은 우리가 테이블빌드 회계 흔적 균형 보고서 성능 문제
create table jour_entries
(jseq number,
j_date date,
Eseq number,
account_no varchar2(32),
debit number,
credit number,
note varchar2(256));
방법 SQL 재판 균형을위한 최적의 성능 보고서를 구축하기 위해 수행 항목 저널이 있다고 가정? 보고서 열은
입니다. account_number는 계좌 번호입니다.
debit_within_month는 (또는 주어진 날짜는 현재 월에있는 경우 현재 날짜까지)
credit_within_month 그 달의 마지막까지 특정 달의 1 일부터 시작 ACCOUNT_NUMBER 관련된 모든 차변의 합계입니다 : 합 매월 1 일부터 해당 월 말까지 (또는 해당 월이 현재 달인 경우 당일까지) account_number와 관련된 모든 크레딧의 금액입니다.
debit_till_this_day :은 account_number와 관련된 모든 금액의 누계액입니다. 주어진 날짜 (1 일부터 1 일까지).
credit_till_this_day : account_number와 관련된 모든 크레딧의 누적 합계입니다 (주어진 날짜의 1 월 1 일부터 현재 날짜까지).
나는이 선택 시도 :
select account_number
, debit_within_month
, credit_within_month
, debit_till_this_day
, credit_till_this_day
from jour_entries j,
(select account_number, sum(debit) debit_within_month,
sum(credit) credit_within_month
from jour_entries
where j_date between trunc(given_date, 'month') and given_date
group by account_number
) j1,
(select account_number, sum(debit) debit_till_this_day,
sum(credit) credit_till_this_day
from jour_entries
where j_date between trunc(given_date, 'year') and given_date
group by account_number
) j2
wherer j.account_number = j1.account_number
and j.account_number = j2.account_number
하지만 최적의 성능을 위해 (아마도 분석 함수를 사용하여) 다른 솔루션을 찾고 있어요. 나는 당신의 질문을 이해 해요 경우
이미 시도한 것은 무엇입니까? – a1ex07
성능을 제외하면 주어진 날짜가 현재 달에없는 경우 솔루션에서 월별 합계에 대한 올바른 결과를 제공하지 않습니다. 또한 TIL CURRENT 총계에 대한 논리도 잘못되었습니다. – APC
2012 년 6 월에 사용자가 '31-may-2012 '날짜를 입력하면 보고서는 각 account_number에 대해 모든 거래 (직불, 신용)가 발생할 수 있으며 2012 년 시작에서 끝날 때까지 모든 거래가 발생합니다 5 월의. –