ORACLE中的SQL求和错误

时间:2017-07-05 17:36:51

标签: sql oracle

我正在尝试创建一个简单的虚拟数据库,但在尝试查询时遇到了问题:

SELECT
    k.id_customer,
    k.name_customer,
    k.lastname_customer,
    r.date_bill,
    sum(p.price_product*us.quantity) AS TOTAL_PRICE  
FROM
    product p,
    bill r,
    item us,
    customer k  
WHERE
    k.id_customer=1
    AND k.id_customer=r.customer_ID_customer 
    AND us.bill_ID_bill=r.ID_bill
    AND p.ID_product=us.product_ID_product  
GROUP BY k.id_customer

ORACLE声明了以下错误:

  

ORA-00979:不是GROUP BY表达式

我尝试仅使用总和进行相同的查询并且有效,但我想在帐单上添加客户名称和日期。

2 个答案:

答案 0 :(得分:1)

所有非聚合函数的表达式必须是GROUP BY的一部分。试试:

SELECT
    k.id_customer,
    k.name_customer,
    k.lastname_customer,
    r.date_bill,
    sum(p.price_product*us.quantity) AS TOTAL_PRICE  
FROM
    product p,
    bill r,
    item us,
    customer k  
WHERE
    k.id_customer=1
    AND k.id_customer=r.customer_ID_customer 
    AND us.bill_ID_bill=r.ID_bill
    AND p.ID_product=us.product_ID_product  
GROUP BY k.id_customer,
    k.name_customer,
    k.lastname_customer,
    r.date_bill

另外,考虑不要为JOINS使用旧的语法,更有可能无意中引入 CROSS JOIN 。它会是这样的:

...
FROM table1
  INNER JOIN table2
    ON (table1.column1 = table2.column2)

答案 1 :(得分:0)

根据我的理解,您需要包含SELECT子句中不是组函数的所有表达式,因此以下内容应该有效。

Uncaught TypeError: oTable.fnReloadAjax is not a function