我有3张桌子
#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)
答案 0 :(得分:0)
SELECT
Warehouse.[Warehouse_ID],
Warehouse.[Name]
#Products.[Pro_ID],
#Products.[Pro_Name],
#Stock.[Stock_ID],
#Stock.[Qty],
#Stock.[Status]
FROM
#Stock
LEFT OUTER JOIN Warehouse ON #Stock.[Warehouse_ID] = Warehouse.[Warehouse_ID]
LEFT OUTER JOIN #Products ON #Stock.[Pro_ID] = #Products.[Pro_ID]
请注意,从#Stock
开始并外部连接到两个主表,您只能获得#Stock
表中具有实际记录的结果。如果您想要所有仓库中的所有产品,您可以选择FROM Warehouse CROSS JOIN #Products
来获取产品和仓库的每个组合,然后将其连接到您的#Stock
表以获取它们存在的记录,并使用null替换在#Stock
表中没有记录的地方插入零。
答案 1 :(得分:0)
试试这个:
SELECT COUNT(*) from Stock s
INNER JOIN Warehouse w ON s.warehouse_id = w.warehouse.id
where s.Qty > 0
GROUP BY Pro_ID
答案 2 :(得分:0)
你的问题有点不清楚。您是否在寻找每个仓库中每个产品的产品数量?如果是这样,此查询应该适合您:
SELECT
warehouse_id, pro_id, SUM(qty) AS quantity
FROM #stock
WHERE Qty > 0
GROUP BY
warehouse_id, pro_id
答案 3 :(得分:0)
如果您只想获得每个仓库中的内容:
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