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,我希望结果为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       

我会这样解决它:

重要的部分是
具有
。它基本上只是在
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有趣的解决方案有趣的解决方案