【问题标题】:Total and Subtotal总计和小计
【发布时间】:2016-05-11 15:21:54
【问题描述】:
问题。在 PRODUCT 和 ORDERLINE 表中列出已交付的所有产品的产品名称、交付数量以及销售价格的总和和小计。按产品名称升序排列。
我的代码:
SELECT
p.PRODNAME AS "PRODUCT NAME",
ol.QTYDELIVERED AS "QUANTITY DELIVERED",
ol.SALEPRICE AS "SALE PRICE" from ORDERLINE ol
INNER JOIN PRODUCT p ON
ol.PRODID = p.PRODID
ORDER BY p.PRODNAME ASC;
My current Result
Desired Result
【问题讨论】:
标签:
oracle
oracle-sqldeveloper
【解决方案1】:
你可以使用这个(使用CTE)
with subtotal as
(
SELECT p.PRODID,
p.PRODNAME AS "PRODUCT NAME",
ol.QTYDELIVERED AS "QUANTITY DELIVERED",
ol.SALEPRICE * ol.QTYDELIVERED AS "SALE PRICE"
from ORDERLINE ol
INNER JOIN PRODUCT p
ON ol.PRODID = p.PRODID
ORDER BY p.PRODNAME ASC
)
select *
from (select * from subtotal
union all
select PRODID, "PRODUCT NAME", sum("QUANTITY DELIVERED"),
sum("SALE PRICE")
from subtotal
group by PRODID, "PRODUCT NAME"
)
order by "PRODUCT NAME", PRODID, "QUANTITY DELIVERED";
您应该包含 PRODID 来计算分组中的总数,因为 PRODNAME 可能不是唯一的。