Как вычислить сумму всех сумм псевдонимов динамического SQL в Oracle. У меня четыре квартала q1..q4, и данные за каждый квартал рассчитываются с использованием запроса. Всего 4 запроса. У каждого квартала своя сумма. Теперь 5-й запрос необходим для вычисления суммы всех данных за 4 квартала в Oracle в динамическом SQL.
Ниже приведен код за 1 квартал и то, что я делал до сих пор. есть другие запросы для других кварталов.
v_q1 - запрос за квартал - 1
v_q1 := 'sum (case when a.sales_incentive in (''Yes'',''Y'') and a.q1_ote is not null then
1 else 0 end) as associates_si,
sum(case
when a.sales_incentive in (''Yes'',''Y'') then
q1_ote_ctc_maj_cur
else
0
end) prorated_ote_si,
sum(case
when a.sales_incentive in (''Yes'',''Y'') then
q1_etd_payt_ctc_maj_cur
else
0
end) as estimated_payout_si,
sum (case when a.mandatory_bonus in (''Yes'',''Y'') then
1 else 0 end) as associates_mb,
sum(case
when a.mandatory_bonus in (''Yes'',''Y'') then
q1_ote_ctc_maj_cur
else
0
end) prorated_ote_mb ,
sum(case
when a.mandatory_bonus in (''Yes'',''Y'') then
q1_etd_payt_ctc_maj_cur
else
0
end) as estimated_payout_mb,
sum (case when a.discretionary in (''Yes'',''Y'') then
1 else 0 end) as associates_di,
sum(case
when a.discretionary in (''Yes'',''Y'') then
q1_ote_ctc_maj_cur
else
0
end) prorated_ote_di,
sum(case
when a.discretionary in (''Yes'',''Y'') then
q1_etd_payt_ctc_maj_cur
else
0
end) as estimated_payout_di,
sum(case
when a.discretionary in (''Yes'',''Y'') then
q1_etd_payt_rvsd_ctc_maj_cur
else
0
end) as revised_estimated_payout_di,
( sum(case
when a.discretionary in (''Yes'',''Y'') then
q1_etd_payt_rvsd_ctc_maj_cur
else
0
end) +
sum(case
when a.mandatory_bonus in (''Yes'',''Y'') then
q1_etd_payt_ctc_maj_cur
else
0
end) +
sum(case
when a.sales_incentive in (''Yes'',''Y'') then
q1_etd_payt_ctc_maj_cur
else
0
end) ) as total_estimated_payout';
И ниже я попытался сделать v_select_sum - псевдоним суммы столбцов за квартал-1
v_select_sum := '(select associated_si,
prorated_ote_si,
estimated_payout_si,
prorated_ote_mb,
estimated_payout_mb,
prorated_ote_di,
estimated_payout_di,
revised_estimated_payout_di,
total_estimated_payout
from
(';
и объединение всех четвертей:
v_sql_sum := 'select * from ||v_select_sum ||
(' || q1_query || 'union' || q2_query || 'union' ||
q3_query || 'union' || q4_query || 'union' || v_i1 ||
'union' || v_i2 || 'union' || v_i3 || 'union' || v_i4 || ')';