Во-первых, неправильный синтаксис в M_MOBILEMV.Q_RA_EDR_DETAILS_V.sum((charge_fee)/100)
и другие подобные выражения.
Если вам нужен столбец sum
из charge_fee
/ 100 таблицы M_MOBILEMV.Q_RA_EDR_DETAILS_V
(просмотр), он должен
быть
sum(M_MOBILEMV.Q_RA_EDR_DETAILS_V.charge_fee/100)
Далее, вы не можете использовать псевдоним в том же списке SELECT
, где он был представлен. Total_Payment
и Total_data_MB
должны появляться только в выражениях на внешнем SELECT
.
Назначьте псевдонимы каждому выражению внутреннего select
, псевдониму самого внутреннего select
и используйте список квалифицированных имен и выражений, используя эти имена вместо *
во внешнем select
.
Кроме того, похоже, что GROUP BY
отсутствует.
select t.process_time, t.MSISDN, t.sum1,
t.Total_Payment,
t.Total_data_MB,
t.Total_Payment/t.Total_data_MB as cost_per_MB
from (
select
M_MOBILEMV.Q_RA_EDR_DETAILS_V.process_time,
M_MOBILEMV.Q_RA_EDR_DETAILS_V.MSISDN,
sum(M_MOBILEMV.Q_RA_CDR_DETAILS_V.charge_fee_1) as sum1,
(coalesce(sum(M_MOBILEMV.Q_RA_CDR_DETAILS_V.charge_fee_1),0) + coalesce(sum(M_MOBILEMV.Q_RA_EDR_DETAILS_V.charge_fee/100),0)) as Total_Payment,
sum(M_MOBILEMV.Q_RA_EDR_DETAILS_V.amount)/1048576 as Total_data_MB
-- Don't you mean
--GROUP BY M_MOBILEMV.Q_RA_EDR_DETAILS_V.process_time, M_MOBILEMV.Q_RA_EDR_DETAILS_V.MSISDN
from (M_MOBILEMV.Q_RA_EDR_DETAILS_V
left join M_MOBILEMV.Q_RA_CDR_DETAILS_V on concat(trunc(M_MOBILEMV.Q_RA_EDR_DETAILS_V.process_time), M_MOBILEMV.Q_RA_EDR_DETAILS_V.MSISDN) = concat(trunc(M_MOBILEMV.Q_RA_CDR_DETAILS_V.CDR_start_date), M_MOBILEMV.Q_RA_CDR_DETAILS_V.served_MSISDN)
) t
)