0

我有一张名为“ORDER_DETAILS”的表

在此处输入图像描述

还有一个名为 PRODUCT_DETAIL 的表 在此处输入图像描述

我想获取数据

在此处输入图像描述

Order_total 将是 (数量*价格) -> (2*10)+(2*100)+(4*20)=300 的总和

我使用了以下查询

Select  Order_id, (ROUND(SUM(ql.price * ql.quantity), 2) Order_total
From ORDER_DETAILS o
Inner join PRODUCT_DETAIL p
On o.order_id=p.order_id
Group by Order_id

但它给出了错误ORA-00979: not a GROUP BY expression

我在这里做错了什么。我知道这很简单,但无法找出问题所在。

编辑:

已编辑的查询

select o.order_id, round(sum(p.price * p.quantity),2) order_total
from order_details o
inner join product_detail p
on o.order_id = p.order_id
group by o.order_id;
4

1 回答 1

1

即使使用@a_horse_with_no_name 建议的替换表名,您也会遇到许多其他问题,但奇怪的是,它们都不会导致 ORA-00979。不妨把它们列出来,尽管这并不意味着苛刻......

  • 您正在使用表别名ql,但未定义;
  • unit_price当您说该列只是时,您指的是列price
  • 你错过了一个结束),或者更明智的是你之前有一个额外的 ; (我不确定它是否有用——除非你的价格只有几分之一便士/美分/任何东西,否则它不会有太大作用);(ROUNDROUND
  • 您在两个表中都有一个列order_id,但您没有指定在select或 中使用哪个列order by

使用您的新表名,这有效:

select o.order_id, round(sum(p.price * p.quantity),2) order_total
from order_details o
inner join product_detail p
on o.order_id = p.order_id
group by o.order_id;

  ORDER_ID ORDER_TOTAL
---------- -----------
         1         300

如果ROUND打算让它显示两位小数,它不会;你需要TO_CHAR改用,也许:

select o.order_id, to_char(sum(p.price * p.quantity), '999G999D99') order_total
...

  ORDER_ID ORDER_TOTAL
---------- -----------
         1      300.00
于 2013-05-03T12:15:42.430 回答