You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS SQL Server 2019:获取相同master_id的前后行值SQL实现

SQL查询实现任务工时按员工+项目分组转列

原始表格结构及数据

假设你的原始表名为TaskHours,数据如下:

EmployeeIDProjectIDTaskIDTaskNameHours
11011Design5
11012Coding10
11021Design7
21012Coding8
21021Design6
21022Coding12

期望结果

按EmployeeID和ProjectID分组,将不同TaskName作为列展示工时,并汇总总工时:

EmployeeIDProjectIDDesignCodingTotalHours
110151015
1102707
2101088
210261218

实现SQL语句

使用条件聚合即可完成,兼容大多数SQL数据库(MySQL、SQL Server、PostgreSQL等):

SELECT
    EmployeeID,
    ProjectID,
    SUM(CASE WHEN TaskName = 'Design' THEN Hours ELSE 0 END) AS Design,
    SUM(CASE WHEN TaskName = 'Coding' THEN Hours ELSE 0 END) AS Coding,
    SUM(Hours) AS TotalHours
FROM TaskHours
GROUP BY EmployeeID, ProjectID
ORDER BY EmployeeID, ProjectID;

语句说明

  • CASE WHEN 匹配指定任务名称,累加对应工时,未匹配的任务工时记为0
  • GROUP BY EmployeeID, ProjectID 确保按员工+项目维度分组统计
  • SUM(Hours) 直接计算每组总工时
  • ORDER BY 用于按员工和项目排序结果,可按需调整

如果任务名称更多,只需新增对应的SUM(CASE...)语句即可。

内容的提问来源于stack exchange,提问作者S. Fawzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:15:31