Oracle查询报错ORA-00904:无效标识符问题求助
ORA-00904错误分析与修复方案
错误原因
- 列引用不存在:
finalresults中尝试引用t.testtime,但上游的testsCTE并未将t.testtime纳入查询结果列。tests仅选取了t.time,尽管WHERE子句用到了t.testtime,但未将其加入SELECT列表,导致后续无法访问该列。 - 语法错误:
tests的SELECT语句最后一列t.time后多了冗余逗号。finalresults的GROUP BY子句中,t.testtime与t.result之间缺少分隔逗号。
修正后的SQL
WITH tests AS ( SELECT t.place, t.stationnr, t.result, i.type, t.testtime -- 新增该列,供后续CTE使用 FROM result_test t INNER JOIN result_ident i ON t.place = i.place JOIN stat_testplacegroup pg ON pg.place = t.place INNER JOIN result_release r ON i.type = r.type WHERE t.testtime BETWEEN TO_DATE('2022-11-20T00:00:00', 'YYYY-MM-DD"T"HH24:MI:SS') AND TO_DATE('2022-11-26T00:00:00', 'YYYY-MM-DD"T"HH24:MI:SS') ), finalresults AS ( SELECT t.place "place", t.stationnr "stationnr", convres(t.result) "convres", t.type "type", t.testtime "testtime" FROM tests t INNER JOIN result_testecu_11 tecu ON tecu.testresid = t.testresid INNER JOIN result_pathecu pecu ON pecu.ecuid = tecu.ecuid INNER JOIN result_pathfunc func ON pecu.ecuid = func.ecuid GROUP BY t.place, t.stationnr, t.type, t.testtime, -- 补充逗号 t.result ) SELECT * FROM finalresults ORDER BY finalresults.testtime DESC FETCH FIRST 5 ROWS ONLY;
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

