繁体   English   中英

使用表别名时Oracle无效标识符

[英]Oracle invalid identifier when using table alias

我有一个查询,该查询使用with语句创建两个别名表:

WITH Rev AS
(SELECT *
   FROM FORECAST.REVENUE_SUMMARY
  WHERE FORECAST.REVENUE_SUMMARY.FEE_CD_ACT_SUM_ACCTG_DA >= to_date('10/01/2013', 'mm/dd/yyyy')
    AND FORECAST.REVENUE_SUMMARY.FEE_CD_ACT_SUM_ACCTG_DA < to_date('10/01/2014', 'mm/dd/yyyy')
),
Mon_pv as 
(select to_char(FEE_CD_ACT_SUM_ACCTG_DA, 'MON') as "Mon", 
        Fee_CD, 
        Fee_NM, 
        SUM(CASH_DAILY_CL) as "Collections" 
   from Rev 
 group by to_char(FEE_CD_ACT_SUM_ACCTG_DA, 'MON'), 
          Fee_CD, 
          Fee_NM
)
select distinct Mon 
  from Mon_pv
;

在Mon_pv表中,“ Mon”只是派生的月份列。 因此,在最后一个查询中,我要做的只是选择一个不同月份名称的列表,但这给我一个错误,指出“ Mon是无效的标识符”。 最终,我希望能够在数据透视表中使用它来创建月份名称之外的列。 但是,任何使用“ Mon”作为列的查询都会引发错误。 但是当我从Mon_pv中使用Select *时,“ Mon”将显示为一列。 当我在最终的Select语句中特别提到列名时,为什么会引发错误?

正如评论中已经提到的那样: "Mon"Mon是不同的标识符。 将标识符放在双引号中时,它变得区分大小写(并且还允许使用多种字符)。 不使用双引号时,名称将自动转换为大写。 因此, MonMONmon都读为MON ,而"Mon"则不是。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM