2015-10-20 66 views
0

我有這兩個表:SQL服務器:不能在一個表達式執行聚合函數包含聚合或子查詢

存儲:

id (int, PK) 
articleNr (nvarchar(10)) 
shelf (nvarchar(10)) 
number (int) 

訂單:

orderNr (int, PK) 
articleNr (nvarchar(10)) 
ordered (int) 
picked (int) 

我想了解某個物品編號有多少項目可供購買。

這樣的物品的總數只是

select sum(number) 
from storage 
group by articleNr 

而有序,沒有拿起物品的數量只是

select sum(ordered) - sum(picked) 
from orders 
group by articleNr 

因此,所有我想做的事真的是隻減去後者來自前者,我有我的答案,但是當我嘗試在查詢中這樣做時,我無法這樣做,因爲它是SUM內的SUM。我真正想要做的是一樣的東西:

select sum(query1) - sum(query2) 

(其中QUERY1高於第一查詢和QUERY2第二)

但是,當我這樣做,我得到的錯誤信息是在主題。

+0

我沒有得到任何我有療法兩個查詢的錯誤,但如果我這樣做: 選擇總和(查詢1) - 和(2查詢) 然後我得到這個問題的錯誤。 –

回答

1

也許這:

select coalesce(s.articleNr, o.articleNr) as articleNr, 
    coalesce(s.q_stored,0) - coalesce(o.q_topick,0) as q_remaining 
from (
    select articleNr, sum(number) as q_stored 
    from storage 
    group by articleNr) s 
full join (
    select articleNr, sum(ordered) - sum(picked) as q_topick 
    from orders 
    group by articleNr 
) o on o.articleNr = s.articleNr 
+0

這似乎工作!謝謝! –

相關問題