我有一个名为'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;
答案 0 :(得分:1)
即使使用@a_horse_with_no_name推荐的替换表名,您还有许多其他问题,但奇怪的是它们都不会导致ORA-00979。不妨列出它们,虽然这并不是很苛刻......
ql
,但未定义; unit_price
时,您指的是列price
; )
,或者更明智的是您在(
之前有额外 ROUND
; (我不确定ROUND
是否有用 - 除非您的价格是便士/美分/无论如何,否则它不会有太大作用; 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