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