【问题标题】:How do I get around Group Function is not allowed here我如何绕过这里不允许使用组功能
【发布时间】:2017-09-02 04:49:15
【问题描述】:

如果客户有 2 个订单超过 250 美元,我正在尝试提高他们的信用额度。

我的代码是

UPDATE Customers SET CreditLimit = (CreditLimit * .25) WHERE Amount IN (SELECT CustNum, Cust, Amount
       FROM Orders
       INNER JOIN Customers ON Orders.Cust = Customers.CustNum
       WHERE Amount > 250)
       AND Count(Amount) > 1;

我得到的错误是

错误报告 - SQL 错误: ORA-00934: group function is not allowed 这里 00934. 00000 - “此处不允许使用群组功能” *原因:
*行动:

我知道错误来自 COUNT,但不确定我应该改用什么。任何帮助,将不胜感激。

【问题讨论】:

  • 你为什么要过滤这个?似乎没有必要。

标签: sql oracle


【解决方案1】:

如果您想提高拥有多个订单且价值大于 250 的客户的信用额度,那么您需要这样的东西:

UPDATE Customers c
    SET CreditLimit = (CreditLimit * 0.25)
    WHERE (CustNum, Amount) IN (SELECT o.Cust, o.Amount
                                FROM Orders o
                                WHERE Amount > 250
                                GROUP BY o.Cust
                                HAVING Count(o.Amount) > 1
                               );

Oracle 不支持UPDATE 中的FROM 子句。 IN 列表和 HAVING 子句的放置也有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2023-03-23
    • 2021-12-20
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多