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

SSRS中如何回顾性过滤行:仅展示有未完成任务员工的所有任务记录

SSRS 需求实现方案

需求1:隐藏全部任务均为Completed的员工的所有记录

提供两种实现方式,可根据实际场景选择:

方式1:数据集层面实现(推荐,性能更优)

在数据集的查询SQL中新增员工维度的标记字段,再过滤全完成的员工即可,不会过滤掉有Open任务的员工的Completed任务行:

SELECT 
  [Worker ID],
  [Task Name],
  [Task Status],
  -- 标记该员工是否存在至少1个Open任务
  MAX(CASE WHEN [Task Status] = 'Open' THEN 1 ELSE 0 END) OVER (PARTITION BY [Worker ID]) AS has_open_task,
  -- 标记该员工是否仅Task-4为Open(用于需求3统计)
  CASE WHEN 
    SUM(CASE WHEN [Task Name] IN ('Task-1','Task-2','Task-3') AND [Task Status] = 'Completed' THEN 1 ELSE 0 END) OVER (PARTITION BY [Worker ID]) =3
    AND SUM(CASE WHEN [Task Name] = 'Task-4' AND [Task Status] = 'Open' THEN 1 ELSE 0 END) OVER (PARTITION BY [Worker ID]) =1
  THEN 1 ELSE 0 END AS is_only_task4_open
FROM 你的业务表名
-- 仅保留存在Open任务的员工的所有行
WHERE MAX(CASE WHEN [Task Status] = 'Open' THEN 1 ELSE 0 END) OVER (PARTITION BY [Worker ID]) =1

方式2:SSRS报表端实现(无需修改SQL查询)

给报表按Worker ID创建行组,设置行组的可见性表达式为:

=IIF(CountDistinct(IIF(Fields!Task_Status.Value = "Open", 1, Nothing), "你的WorkerID行组名称") = 0, True, False)

该表达式会判断当前员工分组下是否没有Open任务,是则隐藏整个分组的所有行。

需求3:统计仅Task-4为Open状态的员工总数

若已采用上述数据集层面方案

直接用以下统计表达式即可:

=CountDistinct(IIF(Fields!is_only_task4_open.Value = 1, Fields!Worker_ID.Value, Nothing), "你的数据集名称")

若不想修改数据集,直接在报表端统计

使用Lookup函数匹配同员工的4个任务状态判断,表达式如下:

=CountDistinct(
  IIF(
    Lookup(Fields!Worker_ID.Value & "-Task-1", Fields!Worker_ID.Value & "-" & Fields!Task_Name.Value, Fields!Task_Status.Value, "你的数据集名称") = "Completed"
    AND Lookup(Fields!Worker_ID.Value & "-Task-2", Fields!Worker_ID.Value & "-" & Fields!Task_Name.Value, Fields!Task_Status.Value, "你的数据集名称") = "Completed"
    AND Lookup(Fields!Worker_ID.Value & "-Task-3", Fields!Worker_ID.Value & "-" & Fields!Task_Name.Value, Fields!Task_Status.Value, "你的数据集名称") = "Completed"
    AND Lookup(Fields!Worker_ID.Value & "-Task-4", Fields!Worker_ID.Value & "-" & Fields!Task_Name.Value, Fields!Task_Status.Value, "你的数据集名称") = "Open",
    Fields!Worker_ID.Value,
    Nothing
  ),
  "你的数据集名称"
)

注:将表达式中「你的数据集名称」「你的WorkerID行组名称」替换为实际报表中对应的名称即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:06:07