【发布时间】:2021-10-16 06:33:50
【问题描述】:
我在下面有一个测试案例,我正在尝试将日程表与 schedule_assignment 表连接起来,这样我就可以在我的 CTE 中访问employee_id。当我运行下面的查询时,我得到一个错误。我可能在 JOIN 上做错了,但似乎无法让它工作。
ORA-00903: 无效的表名
任何帮助将不胜感激。提前感谢所有回答的人。
ALTER SESSION SET NLS_DATE_FORMAT = 'MMDDYYYY HH24:MI:SS';
create table schedule_assignment(
schedule_id number(4),
schedule_date DATE,
employee_id NUMBER(6)
);
insert into schedule_assignment(
schedule_id,
schedule_date,
employee_id
)
VALUES (22,
TO_DATE('2021/08/23 00:00:00', 'yyyy/mm/dd hh24:mi:ss'),1);
create table schedule(
schedule_id NUMBER(4),
location_id number(4),
start_date DATE,
end_date DATE,
check (start_date=trunc(start_date,'MI')),
check (end_date=trunc(end_date,'MI'))
);
insert into schedule(
schedule_id,
location_id,
start_date,
end_date
)
VALUES (22,1,TO_DATE('2021/08/23 11:00:00', 'yyyy/mm/dd hh24:mi:ss'),TO_DATE('2021/08/23 11:04:00', 'yyyy/mm/dd hh24:mi:ss'));
insert into schedule(
schedule_id,
location_id,
start_date,
end_date
)
VALUES (22,2,TO_DATE('2021/08/23 11:10:00', 'yyyy/mm/dd hh24:mi:ss'),
TO_DATE('2021/08/23 11:13:00', 'yyyy/mm/dd hh24:mi:ss'));
insert into schedule(
schedule_id,
location_id,
start_date,
end_date
)
VALUES (22,3,TO_DATE('2021/08/23 11:16:00', 'yyyy/mm/dd hh24:mi:ss'),TO_DATE('2021/08/23 11:19:00', 'yyyy/mm/dd hh24:mi:ss'));
WITH sch AS
(
SELECT
schedule_id,
employee_id,
location_id,
start_date,
end_date
FROM schedule s
JOIN ON
schedule_assignment sa
s.schedule_id = sa.schedule_id AND TRUNC(s.start_date) = sa.schedule_date
)
SELECT * from sch;
【问题讨论】:
-
FROM schedule s JOIN ON schedule_assignment sa必须是:FROM schedule s JOIN schedule_assignment sa ON ...