2016-12-28 25 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:2つの選択クエリを結合する方法

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であるを持っている通常の方法をしたいと思う理由はわからない - はずほとんどのデータベース製品に存在します。

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 
:以下Oracle構文を使用し

2

ありがとう:

SELECT OrderID, SUM(Quantity) as OrderQuantity, 
     SUM(SUM(Quantity)) OVER() as TotalItemsOrdered 
FROM OrderDetails 
WHEER OrderID in ('10248','10249') 
GROUP BY OrderID; 
関連する問題