供应链SQL查询

时间:2017-12-22 18:07:36

标签: sql oracle

我的SQL代码存在问题。

我想显示与某个分销中心/ WH对应的商店总数。我希望两者都绑定到某个项目。

例如:我有一个WH给了50个商店一个特定商品。我希望查询告诉我,如果我给它项目#和WH#它将给我收到该项目的商店数量。

SELECT 
    COUNT(*) AS TOTAL_STORES
FROM
    (SELECT 
         a.WH_i, a.STORE_i
     FROM  
         WH a, STORES b
     WHERE 
         a.item_i = 2201
         AND a.WH_i IN (10) 
     GROUP BY 
         a.WH_i, B.STORE_i
     HAVING 
         COUNT(a.item_i) = 1) a; 

表WH具有仓库编号和料号,而商店具有商店编号。

我是SQL的新手,所以我对加入还没有100%的信心。不过,我们非常感谢任何帮助!

编辑:我尝试加入这两个表而没有实际使用JOIN子句,但仍然没有给出正确的结果。

SELECT COUNT(*) AS TOTAL_STORES
FROM( 
  SELECT a.WH_i, b.STORE_i
  FROM  WH a, STORES b
  WHERE a.item_i = b.sku_i
  AND a.stock_i = b.stock_i
  AND a.item_i = 2201
  AND a.WH_i IN (10) 
  GROUP BY a.WH_i, B.STORE_i
  HAVING COUNT(a.item_i) = 1
 )a; 

2 个答案:

答案 0 :(得分:0)

SELECT a.WH_i, a.item_i, count(DISTINCT b.store_i)
FROM WH a
JOIN STORES b
ON a.item_i = b.sku_i
GROUP BY a.WH_i, a.item_i 

答案 1 :(得分:0)

您只需要商店数量,所以只需在您的子查询中提取商店。

SELECT COUNT(STORE_i) AS TOTAL_STORES
FROM( 
  SELECT b.STORE_i
  FROM  WH a
      JOIN STORES b
      ON a.item_i = b.sku_i
      AND a.stock_i = b.stock_i
  WHERE 
      a.item_i = 2201
      AND a.WH_i = 10
  GROUP BY b.STORE_i
  HAVING COUNT(a.item_i) = 1
 ) a;