【发布时间】:2015-08-24 19:17:39
【问题描述】:
我有一个使用 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”作为列的查询都会引发错误。但是当我使用 Select * from Mon_pv "Mon" 时,它会显示为一列。为什么我在最后的 Select 语句中特别提到列名时会抛出错误?
【问题讨论】:
-
您是否尝试更改别名?
-
如果在查询的最后部分也对
"Mon"应用双引号怎么办? -
没有也没试过。但是在最后一个选择语句中将列名放在引号中是有效的。我什至从未想过我可能不得不这样做。
-
"Mon"是与Mon不同的标识符。详见手册:docs.oracle.com/cd/E11882_01/server.112/e41084/…