寻找非零库存的商店

时间:2017-09-14 10:03:17

标签: sql sql-server-2012

根据下表和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       

2 个答案:

答案 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)