如何在SSRS中合并两个数据集工时字段并按EmployeeID汇总?
嘿,刚好我之前帮别人处理过类似的工时汇总需求,给你几个不同工具场景下的解决方案,你可以对着自己用的工具来选:
方案1:用SQL直接合并汇总(如果数据集存在数据库中)
这是最直接的方式,先把两个数据集的工时数据统一结构,再按员工ID分组求和:
SELECT EmployeeID, SUM(TotalHours) AS TotalWorkHours FROM ( -- 提取工单表的员工ID和工时 SELECT EmployeeID, WorkOrderHours AS TotalHours FROM WorkOrderDataset UNION ALL -- 提取服务请求表的员工ID和工时 SELECT EmployeeID, ServiceRequestHours AS TotalHours FROM ServiceRequestDataset ) CombinedHours GROUP BY EmployeeID ORDER BY TotalWorkHours DESC;
这里用UNION ALL而不是UNION,是为了保留所有原始记录(避免因为重复行丢失数据),外层的GROUP BY会自动把同一个员工的所有工时加总。
方案2:Power BI中实现合并与展示
如果是用Power BI做报表,步骤很清晰:
- 先把两个数据集导入Power Query编辑器,确保两个表的工时字段可以对应(比如一个叫
工单工时,一个叫服务请求工时,可以先重命名成统一的工时) - 在Power Query里用「追加查询」功能,把两个表合并成一张新的组合表
- 返回数据视图,新建一个度量值:
总工时 = SUM(组合表[工时]) - 最后在报表画布上拖入表格/矩阵,把
EmployeeID放到行区域,把「总工时」度量值放到值区域,就能直接看到每个员工的总工时了
方案3:Excel里快速汇总
如果是Excel格式的数据集:
- 先把两个表整理成结构一致的格式(比如都有
EmployeeID和工时列),可以放在同一个工作表的不同区域,或者不同工作表 - 选中两个表的所有数据(按住Ctrl可以跨表多选),插入数据透视表
- 在数据透视表字段面板里,把
EmployeeID拖到「行」区域,把工时拖到「值」区域,然后把值字段设置为「求和」,这样就自动汇总好了
几个要注意的小细节:
- 务必保证两个数据集里的
EmployeeID格式完全一致,比如都是纯数字、或者都是带前缀的文本,不然会出现同一个员工被分成两行的情况 - 如果某个员工只有工单或者只有服务请求的记录,上面的所有方案都能正常识别并汇总,不会漏掉数据
内容的提问来源于stack exchange,提问作者mal88
相关产品推荐
相关产品推荐

