如何在查询SQL oracle中正确编写别名

时间:2015-03-05 18:54:15

标签: mysql oracle compilation

这是我的查询

CREATE VIEW CourseQueuePositions AS
SELECT t2.code , t2.cid , 
(SELECT COUNT(*) as queue 
FROM Waits t1
WHERE t2.code = t1.code AND t1.queue# <= t2.queue#)
FROM Waits t2;

我一直收到这个编译错误 命令行出错:3列:9 00998. 00000 - “必须使用列别名命名此表达式”

尽管Oracle SQL开发人员事先没有指出任何错误。另外我相信我使用别名“查询”所以我真的不明白。帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

尝试在子查询之后而不是在子查询中的列名之后放置别名。

虽然,我会重写查询:

CREATE VIEW CourseQueuePositions AS
SELECT t2.code , t2.cid , count(t1.code) queue
FROM Waits t1, Waits t2
WHERE t2.code = t1.code AND t1.queue# <= t2.queue# ;

我现在无法访问Oracle,因此无法对其进行测试。但试一试。

在审核您的查询后,很难确切地说您正在尝试这样做。你能用示例数据更新问题,并解释你想要做什么吗?

答案 1 :(得分:0)

我想出了解决方案。以前我在内部子查询SELECT语句中添加了别名,但这不是正确的方法。我应该做的是创建ENTIRE子查询的别名。所以像这样......

CREATE VIEW CourseQueuePositions AS 
SELECT t2.code, t2.cid, 
(SELECT COUNT(*) 
FROM Waits t1 
WHERE t1.code = t2.code AND t1.queue# <= t2.queue#) AS queue
FROM Waits t2;