Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何获得每个仓库的产品总数量?_Sql_Sql Server 2008 - Fatal编程技术网

Sql 如何获得每个仓库的产品总数量?

Sql 如何获得每个仓库的产品总数量?,sql,sql-server-2008,Sql,Sql Server 2008,我有三张桌子 #Products [Pro_ID] ,[Pro_Name], #Stock [Stock_ID] ,[Pro_ID],[Warehouse_ID] ,[Qty] ,[Status] Warehouse [Warehouse_ID] ,[Name] 我正在为我的asp.net项目制作一份报告,其中显示了每个仓库中的产品总量。我尝试了这个查询,它只显示作为标题写入的Pro_ID,没有任何数据0行受到影响 SELECT Pro_ID from Stock where Qt

我有三张桌子

#Products  [Pro_ID] ,[Pro_Name],   
#Stock  [Stock_ID] ,[Pro_ID],[Warehouse_ID] ,[Qty] ,[Status]
Warehouse  [Warehouse_ID] ,[Name]
我正在为我的asp.net项目制作一份报告,其中显示了每个仓库中的产品总量。我尝试了这个查询,它只显示作为标题写入的Pro_ID,没有任何数据0行受到影响

SELECT Pro_ID from Stock
where Qty > 0
GROUP BY Pro_ID
HAVING COUNT(*) = (SELECT COUNT(*) FROM Warehouse)
这是我最近的库存

请注意,通过从Stock和outer开始连接到两个主表,您只能得到Stock表中有实际记录的结果。如果您想要所有仓库中的所有产品,您可以从仓库交叉连接产品中进行选择,以获取产品和仓库的每个组合,然后将其外部连接到您的库存表中,以获取它们存在的记录,并使用空替换来插入库存表中没有记录的零

试试这个:

SELECT COUNT(*) from Stock s
INNER JOIN Warehouse w ON s.warehouse_id = w.warehouse.id
where s.Qty > 0
GROUP BY Pro_ID

你的问题有点不清楚。您是否在寻找每个仓库中每个产品的产品计数?如果是这样,此查询应适用于您:

SELECT 
  warehouse_id, pro_id, SUM(qty) AS quantity
FROM #stock
WHERE Qty > 0
GROUP BY 
  warehouse_id, pro_id

如果您只想获得每个仓库中的物品:

SELECT w.Name, sum(s.Qty)
FROM Stock s 
INNER JOIN Warehouse w 
ON s.Warehouse_ID = w.Warehouse_ID
GROUP BY w.Warehouse_ID,w.Name

库存和仓库的内部连接如何?然后只需选择count*,group By Pro_IDHAVING COUNT*=从仓库中选择COUNT*将筛选您的所有结果-您要求的ID的行数与整个表的行数相同。@SergioIvanuzzo..您可以将其作为答案而不是注释发布。如果您展示一个您试图实现的示例,这将有所帮助这只会给我与我相同的结果张贴了库存表图像。您能提供一个您希望看到的输出的示例吗?如仓库1-ABC=100产品仓库2-XYZ=234产品,我是指每个仓库的产品总数?对不起,但这仍然不清楚。请使用上面提供的列名显示您希望输出在结果集中的外观。您是指产品总数,即每个仓库中有多少不同的产品ID,还是指您想要每个产品的数量?因此,您需要根据条件更改组。尝试按仓库id分组
SELECT w.Name, sum(s.Qty)
FROM Stock s 
INNER JOIN Warehouse w 
ON s.Warehouse_ID = w.Warehouse_ID
GROUP BY w.Warehouse_ID,w.Name