首页 > 解决方案 > 如何使用 SQL 求和?

问题描述

我有 2 张桌子:

表格1:

Project_Name    Start Date
P-2018-001      2018/06/20
P-2018-002      2018/06/21
P-2018-003      2018/06/22

表 2:

Date        Project_Name    Staff   Working_Time
2018/06/20  P-2018-001      Staff01 8
2018/06/20  P-2018-002      Staff02 6
2018/06/21  P-2018-001      Staff03 9
2018/06/21  P-2018-003      Staff02 8
2018/06/21  P-2018-002      Staff01 9
2018/06/22  P-2018-003      Staff03 5
2018/06/22  P-2018-002      Staff01 7
2018/06/22  P-2018-001      Staff02 10

预期输出:

Project_Name    Start Date  Staff01     Staff02     Staff03
P-2018-001      2018/06/20  8           10          9
P-2018-002      2018/06/21  16          6           0
P-2018-003      2018/06/22  0           8           5

我怎样才能得到这个?

标签: sql

解决方案


这看起来像聚合和join

select t2.project_name, t1.start_date,
       max(case when t2.Staff = 'Staff01' then t2.working_time else 0 end) as Staff01,
       max(case when t2.Staff = 'Staff02' then t2.working_time else 0 end) as Staff02,
       max(case when t2.Staff = 'Staff03' then t2.working_time else 0 end) as Staff03
from table2 t2 join
     table1 t1
     on t1.project_name = t1.project_name
group by t2.project_name, t1.start_date;

推荐阅读