我在Oracle SQL中遇到了丢失的关键字错误,我不确定原因。这是我的代码。我希望根据变量P1_DATE_CHOOSER将列拆分不同的时间。 (如果有帮助,我会使用Apex App Developer。)
Select START_DATE,
Round(Avg(Run_TIME), 3) as "Average_RunTime",
Round(Max(Run_TIME), 3) as "Max_RunTime", Round(Median(Run_time), 3) as "Median_RunTime"
from
(Select job_id,
Case P1_DATE_CHOOSER
WHEN 'Daily' THEN TRUNC(start_time) as 'START_DATE'
WHEN 'Weekly' THEN to_char(start_time, 'WW') as 'START_DATE'
WHEN 'Monthly' THEN to_char(start_time, 'MONTH') as 'START_DATE'
END,
1440*(END_TIME - START_TIME)) as "RUN_TIME"
from NI_INFA_ACTIVITY_LOG_V
order by job_id asc, start_time asc)
group by START_DATE order by START_DATE
任何帮助都将不胜感激。
答案 0 :(得分:1)
Select START_DATE,
Round(Avg(Run_TIME), 3) as 'Average_RunTime',
Round(Max(Run_TIME), 3) as 'Max_RunTime',
Round(Median(Run_time), 3) as 'Median_RunTime'
from
(Select job_id,
(Case :P1_DATE_CHOOSER
WHEN 'Daily' THEN TRUNC(start_time)
WHEN 'Weekly' THEN to_char(start_time, 'DAY')
WHEN 'Monthly' THEN to_char(start_time, 'MONTH')
END) AS 'START_DATE',
1440*(END_TIME - START_TIME)) as "RUN_TIME"
from NI_INFA_ACTIVITY_LOG_V
)
group by START_DATE
order by START_DATE
;
首先,当你绑定APEX变量或ID时,你必须这样做
前缀为:
,后跟项目ID。
其次,在case...when...then....end
中,必须在end
关键字之后提及列别名。
第三,不要在子查询中使用group by
order by
。如果你这样做就没用了。
答案 1 :(得分:0)
您的子查询需要别名。如果你想这样做:
select something
from
(subquery goes here)
你必须给它一个别名
select something
from
(subquery goes here) aliasName
您的代码还存在其他问题。子查询中的order by子句最多也没用。