次のような仕訳テーブルがあるとします
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: 特定の月の 1 日からその月末まで (または、特定の日付が当月の場合は当日まで) の account_number に関連するすべての借方の合計です。
credit_within_month: 特定の月の 1 日からその月末まで (または、特定の日付が当月の場合は当日まで) の account_number に関連するすべてのクレジットの合計です。
debit_till_this_day: 特定の日付の 1 年間 (特定の日付の 1 月 1 日から現在まで) の account_number に関連するすべての借方の累積合計です。
credit_till_this_day: 特定の日付の 1 年間 (特定の日付の 1 月 1 日から現在まで) の 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
しかし、最高のパフォーマンスを得るために、他のソリューションを(おそらく分析関数を使用して)探しています。