【发布时间】:2018-09-14 16:34:12
【问题描述】:
但是,我有一列定义错误。我已经为所有列正确别名。我想做的就是从名为 fdsna.t_mer_dim_na 的表中引入 avg_tkt_amt。它可以使用primary_mer_num 加入第一个表。我不确定为什么我不断收到此错误。
SELECT
primary_ext_mid
, mer_dba_nam
, clg_num
, ent_num
, ent_nam
, mer_opn_dte
, CASE
WHEN mer_cls_dte > sysdate+30
THEN null
ELSE
mer_cls_dte
END mer_cls_dte
--, compliant_environment
--, certified_date
, MAX(lst_dep_dte) lst_dep_dte
, MIN(first_dep_dte) first_dep_dte
, CASE
WHEN period_date BETWEEN '1-jan-2018' AND '31-jan-2018'
THEN SUM(grss_vol)
ELSE
null
END jan_gross_vol
, CASE
WHEN period_date BETWEEN '1-feb-2018' AND '28-feb-2018'
THEN SUM(grss_vol)
ELSE
null
END feb_gross_vol
, CASE
WHEN period_date BETWEEN '1-mar-2018' AND '28-mar-2018'
THEN SUM(grss_vol)
ELSE
null
END mar_gross_vol
, SUM(grss_vol) AS gross_volume
--, avg_tkt_amt
, SUM (DIAOE-equip_rev_amt) AS DIAO
, SUM(dia) AS DIA
,SUM(diaoe) AS DIAOE
,SUM(AMEX_ACQUIRED_TRN_DB_cnt - AMEX_ACQUIRED_TRN_CR_cnt + DEBIT_CARD_TRN_DB_cnt - DEBIT_CARD_TRN_CR_cnt + DISCOVER_ACQUIRED_TRN_DB_cnt - DISCOVER_ACQUIRED_TRN_CR_cnt + VISA_MC_ACQUIRED_TRN_DB_cnt - VISA_MC_ACQUIRED_TRN_CR_cnt) AS nettrncnt
,SUM(OTHER_INCOME_TRN_DB_cnt - OTHER_INCOME_TRN_CR_cnt) AS nettrncnt_other
,SUM(CASH_ADVANCE_TRN_DB_cnt - CASH_ADVANCE_TRN_CR_cnt) AS nettrncnt_cash
FROM bi.t_mer_dim_na a,
stratus.T_SETT_NA b,
bi.t_mer_bill_mth_na c,
FDSNA.T_MER_DIM_NA d,
(SELECT b.mid,a.compliant_environment,a.certified_date
FROM eclipse.compliance_info a,eclipse.merch_mid b
WHERE a.ecl_mid_tag=b.ecl_mid_tag
) f
WHERE a.mid_tag = b.mid_tag
AND clg_num = 7
AND a.mer_dim_id = c.mer_dim_id
AND period_date >= to_date('01012018','mmddyyyy')
AND f.mid(+) = primary_ext_mid
--AND e.mid = primary_ext_mid
AND d.external_mid = primary_mer_num
AND ent_num in ('45810','45811','46849','45948','45824','46911','45509','46845')
GROUP BY primary_ext_mid, mer_dba_nam, clg_num, ent_num, mer_opn_dte, ent_nam,
CASE
WHEN mer_cls_dte > sysdate+30
THEN null
ELSE
mer_cls_dte
END
,period_date
--) sq1
--left join FDSNA.T_MER_DIM_NA b
--on sq1.primary_ext_mid = b.primary_ext_mid
;
【问题讨论】:
-
只限定查询中的所有列名。当您有不止一张桌子时,您应该始终这样做。
-
I have properly aliased all columns.- 我在这里看不到任何别名:select primary_ext_mid , mer_dba_nam , clg_num , ent_num , ent_nam , mer_opn_ ..............SELECT 子句中的某些列来自 2 个或更多表,所以 Oracle 抱怨,因为它不知道是哪一个应该使用。
标签: sql oracle join where-clause