根据下表和ItemID
列表,如何查找列表中所有项目StoreID
的所有StockQty > 0
?
在下面的示例中,给定ItemID
5和6我希望结果为1. ItemID
5将导致1和2。
StoreID | ItemID | StockQty
---------------------------
1 | 5 | 3
1 | 6 | 3
2 | 5 | 3
2 | 6 | 0
3 | 5 | 0
3 | 3 | 3
答案 0 :(得分:2)
我会这样解决:
重要的部分是HAVING
。它基本上只是计算StockQty
为0的ItemIDs。
逻辑:
如果商品的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
答案 1 :(得分:2)
对于项目表
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)