Sql 多表小计
我想显示每个产品名称的小计,也许我所做的命令是无用的, 对我有什么建议吗 我有三张桌子Sql 多表小计,sql,xampp,Sql,Xampp,我想显示每个产品名称的小计,也许我所做的命令是无用的, 对我有什么建议吗 我有三张桌子 select ORDERS.ORDER_NUM, PRODUCT.PRODUCT_ID, PRODUCT.PRODUCT_NAME, ORDER_DETAILS.QUANTITY, ORDER_DETAILS.UNIT_PRICE, sum(ORDER_DETAILS.UNIT_PRICE) as SUBTOTAL from ORDER_DETAILS
select
ORDERS.ORDER_NUM,
PRODUCT.PRODUCT_ID,
PRODUCT.PRODUCT_NAME,
ORDER_DETAILS.QUANTITY,
ORDER_DETAILS.UNIT_PRICE,
sum(ORDER_DETAILS.UNIT_PRICE) as SUBTOTAL
from
ORDER_DETAILS
inner join ORDERS on ORDER_DETAILS.ORDER_NUM = ORDERS.ORDER_NUM
inner join PRODUCT on ORDER_DETAILS.PRODUCT_ID = PRODUCT.PRODUCT_ID
group by
ORDER_DETAILS.ITEM_NUM
order by
PRODUCT.PRODUCT_NAME;
您没有指定数据库。但是,您需要修复您的查询:
- 如果按产品汇总,则订单和订单行中的详细信息不适用
和选择
列表应一致分组依据
- 你想要的总数可能是价格乘以数量
select p.PRODUCT_ID, p.PRODUCT_NAME,
sum(od.UNIT_PRICE * od.QUANTITY) as SUBTOTAL
from ORDER_DETAILS od join
ORDERS o
on od.ORDER_NUM = o.ORDER_NUM join
PRODUCT p
on od.PRODUCT_ID = p.PRODUCT_ID
group by p.PRODUCT_ID, p.PRODUCT_NAME
order by p.PRODUCT_NAME;
还要注意表别名的使用,这样查询更易于编写和读取。定义产品小计?同时标记您的数据库并提供示例数据和所需输出将您的问题添加到您使用的数据库中。看起来您需要一个组总和,大多数DBMS支持:
Sum(ORDER\u DETAILS.UNIT\u PRICE)OVER(PARTITION BY PRODUCT\u ID)as SUBTOTAL
并删除组。
select p.PRODUCT_ID, p.PRODUCT_NAME,
sum(od.UNIT_PRICE * od.QUANTITY) as SUBTOTAL
from ORDER_DETAILS od join
ORDERS o
on od.ORDER_NUM = o.ORDER_NUM join
PRODUCT p
on od.PRODUCT_ID = p.PRODUCT_ID
group by p.PRODUCT_ID, p.PRODUCT_NAME
order by p.PRODUCT_NAME;