Sql 查找非零库存的商店
给定下表和Sql 查找非零库存的商店,sql,sql-server-2012,Sql,Sql Server 2012,给定下表和ItemIDs列表,如何查找列表中所有项目的StoreIDs,其中StockQty>0 在下面的示例中,给定ItemID5和6,我希望结果为1ItemID5将产生1和2 StoreID | ItemID | StockQty --------------------------- 1 | 5 | 3 1 | 6 | 3 2 | 5 | 3 2 | 6
ItemID
s列表,如何查找列表中所有项目的StoreID
s,其中StockQty>0
在下面的示例中,给定ItemID
5和6,我希望结果为1ItemID
5将产生1和2
StoreID | ItemID | StockQty
---------------------------
1 | 5 | 3
1 | 6 | 3
2 | 5 | 3
2 | 6 | 0
3 | 5 | 0
3 | 3 | 3
我会这样解决它: 重要的部分是
具有
。它基本上只是在StockQty
为0的情况下计算ItemID。逻辑:
如果物料的
StockQty
为>0,则我将其“计数”为0,否则为1。如果这些值的
SUM
为0,则所有ItemID的StockQty都大于0
SELECT StoreID
FROM yourtable
WHERE ItemID IN (5,6) -- your list of Items
GROUP BY StoreID
HAVING SUM(CASE WHEN StockQty > 0 THEN 0
ELSE 1
END
) = 0
我会这样解决它: 重要的部分是
具有
。它基本上只是在StockQty
为0的情况下计算ItemID。逻辑:
如果物料的
StockQty
为>0,则我将其“计数”为0,否则为1。如果这些值的
SUM
为0,则所有ItemID的StockQty都大于0
SELECT StoreID
FROM yourtable
WHERE ItemID IN (5,6) -- your list of Items
GROUP BY StoreID
HAVING SUM(CASE WHEN StockQty > 0 THEN 0
ELSE 1
END
) = 0
查看项目表
declare @List table(item int);
insert @List(item)
values (5),(6);
SELECT StoreID, Count(*)
FROM yourtable t
JOIN @List l ON t.ItemID = l.item AND StockQty > 0
GROUP BY StoreID
HAVING Count(*) = (SELECT count(*) FROM @List)
查看项目表
declare @List table(item int);
insert @List(item)
values (5),(6);
SELECT StoreID, Count(*)
FROM yourtable t
JOIN @List l ON t.ItemID = l.item AND StockQty > 0
GROUP BY StoreID
HAVING Count(*) = (SELECT count(*) FROM @List)
您正在使用哪些RDBMS?请标记itMS SQL 2012。标记的请分享你的期望result@TheGameiswar输入值为5,6的列表的结果是1您使用的是哪种RDBMS?请标记itMS SQL 2012。标记的请分享你的期望result@TheGameiswar输入值为5,6的列表的结果是1有趣的解决方案有趣的解决方案