使用多个“分组依据”从2个表中检索数据时遇到了一些麻烦。
以下是2个表格,以及我想从查询中得到的结果。
PrdID Name KG
------------------
1 Hals 10
2 Hals 3
3 Kugel 4
4 Kugel 10
5 Hals 12
6 Kugel 11
7 Hals 12
8 Hals 14
9 Hals 15
10 Kugel 16
11 Hals 8
12 Hals 15
13 Kugel 7
14 Kugel 8
15 Kugel 9
材料
PrdId MatID MatSize
-------------------------
1 a 300/600
2 b 350/500
5 c 400/650
3 b 350/500
4 c 400/650
6 d 450/650
9 b 350/500
10 d 450/650
13 d 450/650
11 c 400/650
12 b 350/500
14 c 400/650
15 d 450/650
7 a 300/600
8 b 350/500
结果表
Name MatSize Kg
----------------------
Hals 300/600 22
Hals 350/500 47
Hals 400/650 20
Kugel 350/500 4
Kugel 400/650 18
Kugel 450/650 43
总之,我想知道每种材料上每种产品使用的Kg量......
答案 0 :(得分:4)
我认为这就是你想要的
select P.Name, M.MatSize, sum(P.KG) as Kg
from Products P
join Material M
on P.PrdId = M.PrdId
Group By P.Name, M.MatId, M.MatSize
(编辑只返回有意义的列)
作为一方,我是否可以建议您将表格更多地标准化为产品[PrdId,Name,Kg]材料[MatId,MatSize] ProductMaterials [PrdId,MatId]
然后查询将变为
select P.Name, M.MatSize, sum(P.KG) as KG
from Products P
join ProductMaterial PM
on PM.PrdId = P.PrdId
join Materials M
on M.MatId = PM.MatId
group by P.Name, M.MatId, P.MatSize
这样做的好处是您只为每种材料类型存储一次MatSize。