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

SSRS报表查询需求:合并员工与审批人数据统计

解决SSRS中员工与审批人数据合并到同一行的问题

方法一:在SQL数据源层面处理(推荐)

直接从数据库查询时完成数据合并,效率更高,报表设计更简洁。假设业务表名为Documents,包含Staff(办理员工)、Approving_Person(审批人)、Status(文件状态,如“待审核”“在办”)字段,可使用以下SQL查询:

WITH CombinedData AS (
    -- 统计员工作为办理人的在办文件数
    SELECT 
        Person = Staff,
        办理中文件数 = COUNT(CASE WHEN Status = '在办' THEN 1 END),
        待审核文件数 = 0
    FROM Documents
    GROUP BY Staff

    UNION ALL

    -- 统计员工作为审批人的待审核文件数
    SELECT 
        Person = Approving_Person,
        办理中文件数 = 0,
        待审核文件数 = COUNT(CASE WHEN Status = '待审核' THEN 1 END)
    FROM Documents
    WHERE Approving_Person IS NOT NULL
    GROUP BY Approving_Person
)
-- 汇总同一人员的所有数据
SELECT 
    Person,
    办理中文件数 = SUM(办理中文件数),
    待审核文件数 = SUM(待审核文件数)
FROM CombinedData
GROUP BY Person
ORDER BY Person;

该查询先分别统计每个人作为办理人和审批人的数据,再合并为一行,直接作为SSRS数据集即可。

方法二:在SSRS报表层面用表达式处理

若无法修改数据源,可在报表中通过表达式实现:

  1. 先创建包含所有人员的数据集(命名为AllPersons),用于报表行组:
SELECT DISTINCT Staff AS Person FROM Documents
UNION
SELECT DISTINCT Approving_Person AS Person FROM Documents
WHERE Approving_Person IS NOT NULL;
  1. 主报表表格行组基于AllPersons的Person字段,添加两个数据列,使用以下表达式:
  • 办理中文件数(统计该员工作为办理人的在办文件):
    =SUM(IIF(Fields!Staff.Value = Fields!Person.Value AND Fields!Status.Value = "在办", 1, 0), "Documents")
    
  • 待审核文件数(统计该员工作为审批人的待审核文件):
    =SUM(IIF(Fields!Approving_Person.Value = Fields!Person.Value AND Fields!Status.Value = "待审核", 1, 0), "Documents")
    
    注意:表达式末尾的"Documents"需替换为你的主数据集实际名称。

原表达式错误原因

你之前使用的=COUNT(IIF(Fields!Staff.Value <> Fields!Approving_Person.Value, Fields!Staff.Value, Nothing))逻辑偏差,它统计的是办理员工与审批人非同一人的记录数量,和需求的“待审核/在办文件数统计”完全不匹配,因此无法得到正确结果。

内容的提问来源于stack exchange,提问作者user23583489

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:55:54