我只是想知道为什么我的View无效(ORA-00905:缺少关键字)。 谢谢你的帮助
CREATE OR REPLACE VIEW Tickets_RAFAL
AS
SELECT t.ticket_id,
t.subject,
t.descr description,
t.assigned_to,
t.created_on,
t.created_by,
t.closed_on,
td.number_of_details
FROM tickets t join (select ticket_id,count(ticket_id) number_of_details FROM Ticket_Details
GROUP BY ticket_id) as td
on t.ticket_id=td.ticket_id
答案 0 :(得分:2)
Oracle不支持将AS
用于(派生)表别名。你需要删除它:
.....
FROM tickets t
join (select ticket_id,count(ticket_id) number_of_details
FROM Ticket_Details
GROUP BY ticket_id
) td --< no AS here
on t.ticket_id=td.ticket_id
答案 1 :(得分:0)
如果您使用SQL*Plus
,则很容易找到并修复错误。理想情况下,我希望ORA-00933: SQL command not properly ended
而不是ORA-00905: missing keyword
。
例如,
SQL> SELECT COUNT(*) FROM emp e,
2 (SELECT * FROM emp
3 ) as "A" WHERE e.empno = A.empno
4 /
) as "A" WHERE e.empno = A.empno
*
ERROR at line 3:
ORA-00933: SQL command not properly ended
SQL>
由于使用关键字 AS
的别名语法不正确,错误堆栈清楚地显示错误位于第3行。
您修改后的创建视图将是 -
CREATE OR REPLACE VIEW Tickets_RAFAL
AS
SELECT t.ticket_id,
t.subject,
t.descr description,
t.assigned_to,
t.created_on,
t.created_by,
t.closed_on,
td.number_of_details
FROM tickets t
JOIN
(SELECT ticket_id,
COUNT(ticket_id) number_of_details
FROM Ticket_Details
GROUP BY ticket_id
) td
ON t.ticket_id=td.ticket_id
/