假設我們有日記帳分錄表如下構建會計線索平衡報告的性能問題
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:就是ACCOUNT_NUMBER從給定本月1日開始,直到該月月底與所有借方的總和(或直到當天如果給定的日期是當月)
credit_within_month:是的總和所有從第一個月開始到第二個月的帳戶號碼相關的所有信用額(或如果給定日期是當前月份,直到當前日期)
debit_till_this_day:是所有與帳戶號碼相關的所有借項的累計總和給定日期(從給定日期的第一天開始到當天)。 credit_till_this_day:是給定日期(從給定日期的第一天開始到當天)的所有與account_number相關的積分總和。
我想這個選擇:
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',那麼報告應該給我每個帳戶號碼所有交易(借方,貸方)發生在5月和所有交易從2012年開始到結束可能。 –