【发布时间】:2015-08-07 21:09:17
【问题描述】:
我有以下情况:
我拥有的仓库的 1 个表:ProductID、数量和地址 我拥有的商店的 1 表:ProductID 和数量 Stores 存储地址的 1 个表
我需要知道的是产品是“有货”还是“缺货”,使用的标准是产品必须有数量 >=0 或 >20k 才能被视为“缺货”两个表(商店和仓库)
我尝试过的如下:
SELECT Product_Cod, qty_wh, QtyStore,
CASE
WHEN sum(QtyStore) BETWEEN 1 AND 20000 THEN
CASE
WHEN qty_wh > 0 THEN 'In Stock'
WHEN qty_wh = 0 THEN 'In Stock'
END
WHEN sum(QtyStore) = 0 OR sum(QtyStore) > 20000 THEN
CASE
WHEN qty_wh <= 0 THEN 'Out of Stock'
WHEN qty_wh > 0 THEN 'in Stock'
END
END AS [Result]
FROM tb_Products, tb_qtyStock, tb_StoreProdAddress
WHERE Product_Cod = wh_CodProduct
AND Product_Cod = Store_CodProduct
GROUP BY Product_Cod, qty_wh, QtyStore
ORDER BY Product_Cod
哪些输出:
ProdCod qty_wh QtyStore Result
10026 26 0 In Stock
10026 26 1 In Stock
10026 26 2 In Stock
10070 25 0 In Stock
10070 25 2 In Stock
10070 25 3 In Stock
10071 20 0 In Stock
10071 20 1 In Stock
10071 20 29991 In Stock
10072 32 0 In Stock
10072 32 1 In Stock
10072 32 29978 In Stock
10204 0 0 Out of Stock
10204 0 1 In Stock
10204 0 4 In Stock
10204 0 29996 Out of Stock
但我不能让它像我想要的那样工作,因为 QtyStore 列不 SUM() 它重复,因为 tb_StoreProdAddress 用于多个商店,因此多个商店可以拥有相同的产品,但每个商店可能有该产品的不同地址,但仓库中给定产品的地址是相同的。
有一种方法可以对 QtyStore 列进行 SUM() 并将 qty_wh 分组???
【问题讨论】:
-
你不能使用 sum 的原因是它在 group by 子句中。您是否尝试过将
QtyStore列从 group by 子句中取出?
标签: sql sql-server