为什么我无法从子查询的标识符中选择?
SELECT e.num_enc "Codigo Encomenda", e.data_enc "Data Encomenda", a.quantidade "Quantidade"
FROM encomendas e, (SELECT e.num_enc num_enc,SUM(i.quantidade) quantidade
FROM itens i, encomendas e
WHERE i.num_enc = e.num_enc AND EXTRACT(YEAR FROM e.data_enc)=2014
GROUP BY e.num_enc) a,
(SELECT AVG(b.quantidade) media
FROM (SELECT SUM(i.quantidade) quantidade
FROM a) c #PROBLEM HERE
WHERE e.num_enc = a.num_enc AND a.quantidade>c.media;
答案 0 :(得分:1)
不,您试图立即从内联视图/子查询中进行选择,这是无法完成的。您可以使用它JOIN
访问外部查询(OR)中的子查询并获取数据。
出于您的目的,您可以考虑使用CTE(除非您使用MySQL
)。
您可以将查询重写为
SELECT e.num_enc "Codigo Encomenda",
e.data_enc "Data Encomenda",
a.quantidade "Quantidade"
FROM encomendas e
JOIN (SELECT e.num_enc num_enc,SUM(i.quantidade) quantidade
FROM itens i, encomendas e
WHERE i.num_enc = e.num_enc AND EXTRACT(YEAR FROM e.data_enc)=2014
GROUP BY e.num_enc) a ON e.num_enc = a.num_enc;
以下部分(出现错误)对我来说看起来不合逻辑,因为您试图从AVG()
结果中获取SUM()
(SELECT AVG(b.quantidade) media
FROM (SELECT SUM(i.quantidade) quantidade
FROM a) c #PROBLEM HERE