我有一套架子,有些没有被使用,但有些是。我想获得正在使用的货架的百分比(我正在使用来自javascript的ajax调用)这是一个很好的方法,你能提供一个例子吗?
这是我到目前为止的查询,它获取空值并将数量设置为0:
SELECT warehouse_locations.location, ISNULL(product_stock_warehouse.quantity, 0) as quantity
FROM product_stock_warehouse
RIGHT JOIN warehouse_locations ON product_stock_warehouse.location = warehouse_locations.location
WHERE warehouse_locations.location LIKE 'A21%'
ORDER BY product_stock_warehouse.quantity
如果货架不是0,那么它是" Full"因此计入使用的百分比。
我正在使用MS-SQL
答案 0 :(得分:1)
我认为你需要聚合。这个想法是这样的:
SELECT wl.location, COALESCE(SUM(psw.quantity), 0) as total_quantity,
(CASE WHEN COALESCE(SUM(psw.quantity), 0) = 0 THEN 'EMPTY' ELSE 'USED' END) as status
FROM warehouse_locations wl LEFT JOIN
product_stock_warehouse psw
ON psw.location = wl.location
WHERE wl.location LIKE 'A21%'
GROUP BY wl.location
ORDER BY psw.quantity;
一些注意事项:
LEFT JOIN
比RIGHT JOIN
更容易理解。这意味着"保留第一个表中的所有行"而不是"稍后在FROM
条款的某些表中保留所有行,而我还没有看到#34;。GROUP BY
为每个" shelf"获取一行,我假设它与" location"相同。