由于 where 和 group by,子查询返回了超过 1 个值
Subquery returned more than 1 value due to where and group by
我想做一个简单的视图,允许查看来自不同仓库的库存总和是否 >0 并且 < 即所述产品的最低库存。
代码如下:
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
当然我得到了错误
Subquery returned more than 1 value. This is not permitted when the subquery follows =
, !=
, <
, <=
, >
, >=
or when the subquery is used as an expression.
我可以做些什么来改变这个吗?
您正在查找相关子查询,而不是 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;
怎么样
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
我想做一个简单的视图,允许查看来自不同仓库的库存总和是否 >0 并且 < 即所述产品的最低库存。
代码如下:
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
当然我得到了错误
Subquery returned more than 1 value. This is not permitted when the subquery follows
=
,!=
,<
,<=
,>
,>=
or when the subquery is used as an expression.
我可以做些什么来改变这个吗?
您正在查找相关子查询,而不是 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;
怎么样
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