每个GROUP BY表达式必须包含不是外部引用的列

时间:2018-03-08 13:22:40

标签: mysql sql

现在已经搞砸了一段时间,但似乎无法接近它的工作。

项目InvoiceNbrInvoiceDtTotalPrice适用于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表达式必须至少包含一个不是外部引用的列。

1 个答案:

答案 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
                     );