【发布时间】:2013-02-17 01:17:10
【问题描述】:
谁能向我解释为什么 dLoad 是 GROUP BY 行中的无效标识符? 这在 Mysql 上运行良好,但我无法让它与 Oracle 一起使用。
CREATE OR REPLACE VIEW DoctorsLoad AS
SELECT dID, gender, specialty, 'Overloaded' AS dLoad
FROM Doctor D, Examine E
WHERE D.dID = E.doctor_id
GROUP BY dID, gender, specialty, dLoad
HAVING COUNT(*) > 10
UNION
SELECT dID, gender, specialty, 'Underloaded' AS dLoad
FROM Doctor D, Examine E
WHERE D.dID = E.doctor_id
GROUP BY dID, gender, specialty, dLoad
HAVING COUNT(*) <= 10;
【问题讨论】:
-
什么是重载?如果它是列名,为什么要引用,然后 dLoad 是列别名,不能在 group by 子句中使用
-
这是一个常量字符串,将被放置在 dLoad 列中。
-
与您的问题无关,但您应该在列前加上适当的表别名。生成更“稳定”的 SQL。