如何在 SQL Server 中使用 SUM 和 GROUP BY 连接两个表

Abd*_* dz 3 join sql-server query group-by sum

我有2张桌子

  1. 产品
ID 指定
1 古柯
2 百事可乐
3 芬达
4
5

2)子产品

产品编号 姓名 数量
1 SM 10
1 lg 10
1 XL 20
2 1升 10
2 2升 20
2 5升 20
3 10
3 20
4 20
4 克德 30

我想要的是这样的:产品表中的指定和总数量,代表具有相同product_id的数量的总和

指定 总数(量
古柯 40
百事可乐 50
芬达 30
50

注:我使用 SQL 服务器

J.D*_*.D. 5

JOIN这可以简单地使用and子句来完成,GROUP_BY如下所示:

SELECT 
    p.designation, 
    SUM(ISNULL(sp.quantity, 0)) AS [total quantity]
FROM product AS p
LEFT JOIN sub_product AS sp
    ON p.id = sp.product_id
GROUP BY p.id, p.designation
Run Code Online (Sandbox Code Playgroud)

请注意使用 a LEFT OUTER JOIN(又名 a LEFT JOIN)来确保即使products没有任何sub_products仍然返回(a 为total quantity0)。sub_product如果保证每个都至少有 1 个,product那么您可以使用 anINNER JOIN代替。