我想在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。
答案 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);