子查询返回的值超过1,由于地点和组由

子查询返回的值超过1,由于地点和组由

问题描述:

我想做一个简单的视图,以便查看来自不同仓库的库存总量是否大于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 

当然,我得到的错误

子查询返回多个值。当子查询遵循=,!=,<,<=,>,>=或当子查询用作表达式时,这是不允许的。

有什么我可以做的改变呢?

您在寻找相关的子查询,而不是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 –

什么

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