1

stock_item在庫システムに出入りしたすべての在庫を格納するテーブルがあります。

各在庫アイテムは、 0 (未割り当て)、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 に答える