基本上,我必须根据部门对表 2 中的人员进行分组(仅通过参考表 1 知道),然后根据类型(通过表 2 知道)对每个部门求和。结果必须按部门分组(通过表1知道)。
任何人都可以帮助我在SQL中执行这样的操作吗?
示例数据:
Table 1
DeptID | Dept
1 | Eng
2 | Mkt
3 | Mkt
4 | Eng
Table 2
Person | DeptID | Type | Amount
A | 1 | p1 | 5
B | 2 | p2 | 3
C | 3 | p1 | 10
D | 2 | p1 | 20
E | 4 | p2 | 17
F | 1 | p2 | 15
G | 2 | p1 | 16
Table Results
Dept | Sum p1 | Sum p2
Eng | 5 | 32
Mkt | 46 | 3
您可以使用条件聚合来执行此操作。
SELECT
t1.Dept,
[Sum p1] = SUM(CASE WHEN t2.Type = 'p1' THEN t2.Amount END),
[Sum p2] = SUM(CASE WHEN t2.Type = 'p2' THEN t2.Amount END)
FROM Table2 t2
INNER JOIN Table1 t1
ON t1.DeptID = t2.DeptID
GROUP BY
t1.Dept