2017-03-04 46 views
0

我想要在Products表中生成所有product_name的列表,並使用ROLLUP添加一個額外的「總價」卷。如何使用ROLLUP和ORDER BY生成額外的TOTAL行?

「總價」的計算方法是從折扣中扣除item_price,再乘以購買的物品的數量。 Products表和Order_Items表都與兩個表中存在的product_id連接。

我的SQL查詢如下:

​​

我得到的問題是,SQL Developer是告訴我,我的選擇列表是incosistent與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

普通的SQL腳本 – 5120bee

+0

我使用SQL Developer來運行我的腳本 – 5120bee

回答

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); 
+0

還在說「SELECT列表與GROUP不一致BY」錯誤 – 5120bee

+0

也是「合計」是根據SQL開發無效的標識符 – 5120bee

+0

哦,掛斷 - 如果TOTAL在單引號「TOTAL」或雙引號「TOTAL」中,它很重要嗎? – 5120bee