2016-12-28 49 views
0
OrderDetailID OrderID ProductID Quantity 
1    10248 11   12 
2    10248 42   10 
3    10248 72   5 
4    10249 14   9 
5    10249 51   40 

我想總結每個OrderID的所有數量,然後我需要總計所有數量。 我能夠創造不同的查詢作爲SQL:如何加入兩個選擇查詢

SELECT OrderID, SUM(Quantity) over()AS TotalItemsOrdered 
FROM OrderDetails 
where OrderID in ('10248','10249') 
group by OrderID; 

SELECT SUM(Quantity) over()AS TotalItemsOrdered 
FROM OrderDetails 
where OrderID in ('10248','10249'); 

,但我想加入這兩個查詢顯示爲相同的結果。請教我如何以相同的結果加入查詢和顯示。 謝謝

回答

0

不知道你爲什麼會想該格式...通常的方式有按組彙總,然後總計是GROUP BY ROLLUP - 這應該存在於大多數數據庫產品中

使用Oracle語法如下:

with inputs (OrderDetailID, OrderID, ProductID, Quantity) as (
     select 1, 10248, 11, 12 from dual union all 
     select 2, 10248, 42, 10 from dual union all 
     select 3, 10248, 72, 5 from dual union all 
     select 4, 10249, 14, 9 from dual union all 
     select 5, 10249, 51, 40 from dual 
    ) 
-- end of test data; SQL query begins below this line 
select case grouping_id(orderid) when 1 then 'TOTAL' 
            else to_char(orderid) end as orderid, 
     sum(quantity) as total_quantity 
from  inputs 
where orderid in (10248, 10249) -- assuming orderid is NUMBER, not VARCHAR 
group by rollup (orderid) 
order by orderid 
; 

ORDERID TOTAL_QUANTITY 
------- -------------- 
10248    27 
10249    49 
TOTAL    76 
2

我想你想要這樣的:

SELECT OrderID, SUM(Quantity) as OrderQuantity, 
     SUM(SUM(Quantity)) OVER() as TotalItemsOrdered 
FROM OrderDetails 
WHEER OrderID in ('10248','10249') 
GROUP BY OrderID;