1

我有一张stock_item桌子,里面有所有进出我的库存系统的库存。

每个库存项目都可以处于多种状态之一,例如:0(not_yet_allocated)、1(已分配)、3(退回)...等。

我正在尝试创建一个通知系统,当我特定库存类型的库存不足时,它会通知我。

这是我到目前为止的SQL,

SELECT name, status, count(id) AS count
FROM stock_item 
WHERE status IN (0,3) /* Items that are not yet allocated (0), or items that have been returned (3) */
GROUP BY name, status
ORDER BY count ASC;

上面的 SQL 工作正常,唯一的问题是如果不满足 WHERE 子句,它不会显示库存类型,换句话说,即使某个类型没有“库存”项目,我仍然需要该类型以 0 计数返回。

4

1 回答 1

2

您需要条件聚合来查看所有项目:

SELECT name, status, sum(case when status IN (0,3) then 1 else 0 end) AS count
FROM stock_item 
GROUP BY si.name, si.status
ORDER BY count ASC;
于 2013-08-10T17:30:54.580 回答