出现错误 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 的 SQL 查询实例:缺少表达式错误