【问题标题】:Invalid Identifier?不合法的识别符?
【发布时间】:2017-04-19 19:26:03
【问题描述】:

我试图了解无效标识符错误在我的 SQL 代码中发生的位置。输出状态为“命令行错误:9 列:10”,位于“join”函数下的“on”函数之后。任何帮助将不胜感激。

这是我的代码:

select
   TO_CHAR(TRUNC("SITE_UPLOAD_DATA_UPLOAD_TIME", 'MM'), 'MON') as month,
   cast (avg("DATA_POINT_UPLOAD_DATA"."value") as int) as "PAST_VALUE" 
from
   "TEST"."DATA_POINT_UPLOAD_DATA",
   "TEST"."COMPONENT_UPLOAD_DATA" 
   join
      "TEST"."COMPONENT_DATA_POINT" 
      on "DATA_POINT_UPLOAD_DATA"."COMPONENT_DATA_POINT_ID" = "COMPONENT_DATA_POINT"."ID" 
where
   "COMPONENT_DATA_POINT"."NAME" = 'ready_go' 
   and "COMPONENT_UPLOAD_DATA"."SITE_UPLOAD_DATA_SITE_ID" = ('abc123')
   and "SITE_UPLOAD_DATA_UPLOAD_TIME" between TRUNC (ADD_MONTHS ('01-MAR-17', - 13), 'MM') and TRUNC (LAST_DAY (ADD_MONTHS ('31-MAR-17', - 1)) + 1) 
group by
   TRUNC("SITE_UPLOAD_DATA_UPLOAD_TIME", 'MM'),
   "COMPONENT_UPLOAD_DATA"."SITE_UPLOAD_DATA_SITE_ID" 
order by
   TRUNC("SITE_UPLOAD_DATA_UPLOAD_TIME", 'MM') desc;

【问题讨论】:

  • 从不FROM 子句中使用逗号。 始终使用明确的正确JOIN 语法。这就是你问题的根源。
  • 我在 Oracle BI Publisher 中执行此操作是否重要?我知道 Oracle BI Publisher 有一个愚蠢的 SQL 语法。

标签: sql oracle11g oracle-sqldeveloper


【解决方案1】:

我从您发布的查询中看到,您应该有两个 JOIN,而您只指定一个 JOIN ON 条件

from
   "TEST"."DATA_POINT_UPLOAD_DATA"
   JOIN "TEST"."COMPONENT_UPLOAD_DATA" ON <some_condition>
   join
      "TEST"."COMPONENT_DATA_POINT" 
      on "DATA_POINT_UPLOAD_DATA"."COMPONENT_DATA_POINT_ID" = "COMPONENT_DATA_POINT"."ID" 

【讨论】:

  • @Fadiddy,然后考虑使用left join 而不是inner join
猜你喜欢
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 2018-07-15
  • 1970-01-01
相关资源
最近更新 更多