我有这个SQL请求,在PostgreSQL中工作正常,但是在Oracle中抛出一个错误"Java::JavaSql::SQLSyntaxErrorException: ORA-00905:缺失关键字“。我想,这里有些东西是Oracle关键字,但找不到它。尝试更改"max“和"master”-相同的错误。
SELECT
id AS "ID",
imitation_mode AS "IMITATION_MODE",
time_begin AS "TIME_BEGIN",
time_end AS "TIME_END",
max(time_begin) AS "MAX_TIME_BEGIN"
FROM ssp_car_flow_master_plan master
INNER JOIN (SELECT max(time_begin) FROM ssp_car_flow_master_plan) AS max
ON master.time_begin = max
GROUP BY imitation_mode, time_begin, time_end, id发布于 2022-05-31 08:01:23
使用MAX解析函数避免两次查询表:
SELECT id,
imitation_mode,
time_begin,
time_end
FROM (
SELECT id,
imitation_mode,
time_begin,
time_end,
MAX(time_begin) OVER () AS max_time_begin
FROM ssp_car_flow_master_plan
)
WHERE time_begin = max_time_begin;或者,从Oracle 12中,您可以使用FETCH FIRST ROW WITH TIES
SELECT id,
imitation_mode,
time_begin,
time_end,
FROM ssp_car_flow_master_plan
ORDER BY time_begin DESC
FETCH FIRST ROW WITH TIES;您的查询失败,因为:
在甲骨文中,在表/子查询alias.
MAX是关键字之前使用AS语法是无效的,如果将它用作别名.,则可能会使人感到困惑。
如果您想修复查询,那么:
SELECT s.id,
s.imitation_mode,
s.time_begin,
s.time_end,
m.max_time_begin
FROM ssp_car_flow_master_plan s
INNER JOIN (
SELECT max(time_begin) AS max_time_begin
FROM ssp_car_flow_master_plan
) m
ON s.time_begin = m.max_time_begin发布于 2022-05-31 07:58:40
尝试和无效使用关键字作为别名。您的查询逻辑似乎有点奇怪;您似乎只想要其time_begin与表中最新的time_begin相等的不同记录?
SELECT DISTINCT
master.id AS "ID",
master.imitation_mode AS "IMITATION_MODE",
master.time_begin AS "TIME_BEGIN",
master.time_end AS "TIME_END",
master.time_begin AS "MAX_TIME_BEGIN"
FROM ssp_car_flow_master_plan master
WHERE master.time_begin = (SELECT max(time_begin) FROM ssp_car_flow_master_plan) 若要修复所提供的查询:
SELECT
master.id AS "ID",
master.imitation_mode AS "IMITATION_MODE",
master.time_begin AS "TIME_BEGIN",
master.time_end AS "TIME_END",
max(master.time_begin) AS "MAX_TIME_BEGIN"
FROM ssp_car_flow_master_plan master
INNER JOIN (SELECT max(time_begin) AS mt FROM ssp_car_flow_master_plan) maxtime
ON master.time_begin = maxtime.mt
GROUP BY imitation_mode, time_begin, time_end, id但如前所述,将内部连接到单个值,然后将其他所有内容分组,并聚合只能是单个值的东西,这简直是胡说八道
https://stackoverflow.com/questions/72444055
复制相似问题