Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用表别名时Oracle标识符无效_Sql_Oracle - Fatal编程技术网

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

Sql 使用表别名时Oracle标识符无效,sql,oracle,Sql,Oracle,我有一个使用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('1

我有一个使用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、Mon和Mon都被读取为Mon,但Mon不是。

是否尝试更改别名?如果在查询的最后一部分也对Mon应用双引号会怎么样?否,也没有尝试过。但在最后一个select语句中,将列名加引号是有效的。我从来没有想过我可能必须这么做。Mon与Mon是不同的标识符。有关详细信息,请参阅手册: