我有一张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。
答案 0 :(得分: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;