出现错误 ORA-00936: 缺少表达式

Posted

技术标签:

【中文标题】出现错误 ORA-00936: 缺少表达式【英文标题】:Getting error ORA-00936: missing expression 【发布时间】:2013-01-26 21:31:06 【问题描述】:

当我尝试以下 SQL 时,我收到错误 ORA-00936:缺少表达式。请帮助我,我希望在 Oracle SQL 中的列上有所不同

SELECT rr.RPT_QUE_I, 
       DISTINCT (rr.ed_sbmt_m, rr.RPT_RUN_STAT_C),
       rr.rpt_cstm_x,
       rr.rpt_cmplt_m,
       CASE 
         WHEN rr.rpt_run_stat_c = 25453 THEN 'PENDING' 
         WHEN rr.rpt_run_stat_c = 25454 THEN 'ACTIVE' 
         WHEN rr.rpt_run_stat_c = 25455 THEN 'FINISHED' 
         WHEN rr.rpt_run_stat_c = 25458 THEN 'ERROR' 
         WHEN rr.rpt_run_stat_c = 25460 THEN 'SCHEDULED' 
       END,
       cc.pro_sym_I,
       rr.usr_wad_ownr_i 
  FROM audit_REPORT_RUN rr, 
       CLIENT_COMPANY cc
 WHERE rr.ED_SBMT_M > TO_DATE('06/01/2012','mm/dd/yyyy') 
   AND rr.ED_SBMT_M < TO_DATE('07/01/2012','mm/dd/yyyy') 
   AND rr.ORG_I = cc.ORG_I
ORDER BY rr.RPT_QUE_I

【问题讨论】:

我不记得 DISTINCT 在 Oracle 上那样工作 - 看起来像是您在 Oracle 上提出并尝试使用的 PostgreSQL 查询。 好的,现在我怎样才能在这两个 cloumns 上获得不同的记录,你能帮我完成查询... 请显示表结构、示例数据和所需的输出——如果可以的话,请构建一个小提琴 (sqlfiddle.com)... @user1958780:您不能在单列中返回表中的两列——不要介意不同的值。删除 distinct 和括号,然后开始使用你所拥有的。 这里的 DISTINCT 是什么意思?这是否意味着可能有两行具有相同的 rr.ed_sbmt_m 和 rr.RPT_RUN_STAT_C,但在 rr.rpt_run_stat_c 等其他列上具有不同的值?如果这是真的,你想如何处理这些差异? 【参考方案1】:

你应该在SELECT关键字之后首先使用DISTINCT关键字,并去掉括号, 或者,如果您需要对其进行分类,请使用GROUP BY 函数。希望你得到想要的结果。

【讨论】:

以上是关于出现错误 ORA-00936: 缺少表达式的主要内容,如果未能解决你的问题,请参考以下文章

ora:00936 缺少表达式错误

ORA-00936 缺少表达式

带有 ORA-00936 的 SQL 查询实例:缺少表达式错误

ORA-00936: 缺少表达式解决方案 - 转换函数

什么可能导致 ORA-00936 - 缺少以下 sql 的表达式?

ORA 00936 缺少表达式