如何使用ROLLUP和ORDER BY生成额外的TOTAL行?

时间:2017-03-04 07:45:24

标签: jquery sql oracle group-by rollup

我想在Products表中生成所有product_name的列表,并添加一个带有" total"的附加卷。价格使用ROLLUP。

"总计"通过从折扣中减去item_price然后乘以所购买商品的数量来计算价格。 Products表和Order_Items表都与两个表中都存在的product_id连接。

我的SQL查询如下:

SELECT product_name, (item_price - discount) * quantity AS "total"
FROM order_items
JOIN products ON products.product_id = order_items.product_id
GROUP BY ROLLUP (product_name, "total amount");

我遇到的问题是SQL开发人员告诉我,我的SELECT列表与GROUP BY不匹配,并且"总金额"别名在GROUP BY子句中无效。

我的预期输出类似于

product_name        total price
product 1            $ 100.00
product 2            $ 300.00
product 3            $ 500.00
TOTAL                $ $900.00 <- generated using ROLLUP

我只需要帮助编写GROUP BY并使用ROLLUP。

1 个答案:

答案 0 :(得分:1)

您希望在第二个字段上使用sum,修改第一个字段上的rollup和合并(或NVL),以便在累计行上显示TOTAL。

试试这个:

select coalesce(product_name, 'TOTAL') Product_name,
    sum((item_price - discount) * quantity) as "total"
from order_items
join products on products.product_id = order_items.product_id
group by ROLLUP(product_name);