我如何在这里不允许使用群组功能

时间:2017-04-06 23:26:23

标签: sql oracle

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

我的代码是

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:不允许组功能   这里   00934. 00000 - "此处不允许使用群组功能"   *原因:
  *操作:

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

1 个答案:

答案 0 :(得分:0)

如果您希望增加具有多个订单的客户的信用额度,该订单的值大于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不支持FROM中的UPDATE子句。您还遇到了IN列表和HAVING子句的位置问题。