[英]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
是不同的标识符。 将标识符放在双引号中时,它变得区分大小写(并且还允许使用多种字符)。 不使用双引号时,名称将自动转换为大写。 因此, Mon
, MON
和mon
都读为MON
,而"Mon"
则不是。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.