2016-09-27 53 views
2

我想做一個簡單的視圖,以便查看來自不同倉庫的庫存總量是否大於0和<是否爲所述產品的最小庫存量。子查詢返回的值超過1,由於地點和組由

下面是代碼:

SELECT a.code, a.description, a.stk_min , b.Stk_Qty 
FROM a 
INNER JOIN b ON a.code = b.productcode 
WHERE a.stk_min > 0 and 

    (SELECT SUM(b.Stk_Qty) 
    FROM b 
    INNER JOIN a ON a.code = b.productcode 
    Group By a.code) <= a.stk_min 

當然,我得到的錯誤

子查詢返回多個值。當子查詢遵循=,!=,<,<=,>,>=或當子查詢用作表達式時,這是不允許的。

有什麼我可以做的改變呢?

回答

0

您在尋找相關的子查詢,而不是group by。該查詢應該可以解決問題:

SELECT a.code, a.description, a.stk_min , b.Stk_Qty 
FROM a JOIN 
    b 
    ON a.code = b.productcode 
WHERE a.stk_min > 0 and 
     (SELECT SUM(b.Stk_Qty) 
     FROM b2 
     WHERE a.code = b2.productcode 
    ) <= a.stk_min; 

我懷疑你想這樣的:

SELECT a.code, a.description, a.stk_min, SUM(b.Stk_Qty) 
FROM a LEFT JOIN 
    b 
    ON a.code = b.productcode 
WHERE a.stk_min > 0 
GROUP BY a.code, a.description, a.stk_min 
HAVING COALESCE(SUM(b.Stk_Qty), 0) < a.stk_min; 
+0

工作就像一個魅力:) 謝謝你洙多! 現在讓我們讀一下Having和Coalesce,這樣我就能弄清楚這是幹什麼的:P –

0

什麼

SELECT a.code, a.description, a.stk_min, SUM(b.Stk_Qty) SumQty 
FROM a join b on b.productcode = a.code 
group by a.code, a.description, a.stk_min 
Where a.stk_min > 0 
Having SUM(b.Stk_Qty) <= a.stk_min