现在已经搞砸了一段时间,但似乎无法接近它的工作。
项目InvoiceNbr
,InvoiceDt
和TotalPrice
适用于TotalPrice
大于平均TotalPrice
的所有发票。按InvoiceNbr
降序排序。
这就是我的想法:
SELECT I.InvoiceNbr AS Invoice#,
I.InvoiceDt AS Date,
I.TotalPrice AS Amount
FROM INVOICE AS I
WHERE I.TotalPrice IN
(SELECT AVG(I.TotalPrice)
FROM INVOICE
GROUP BY I.InvoiceDt, I.InvoiceNbr, TotalPrice
HAVING I.TotalPrice > AVG(I.TotalPrice));
GO
继续收到错误:
每个GROUP BY表达式必须至少包含一个不是外部引用的列。
答案 0 :(得分:0)
你不在逻辑上。您想要使用join
中的from
或子查询返回平均值。您已经开始使用子查询,所以让我们沿着这条路走下去:
SELECT I.InvoiceNbr AS Invoice#,
I.InvoiceDt AS Date,
I.TotalPrice AS Amount
FROM INVOICE I
WHERE I.TotalPrice > (SELECT AVG(I2.TotalPrice)
FROM INVOICE I2
);