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

如何让SSRS报表正确显示每位用户的停机时间(DownTime)

解决方案

方案1:修改数据集查询(推荐)

这种方式从数据源头避免重复值,性能和稳定性更好。你可以将按小时聚合的业务统计逻辑,和用户唯一的Downtime数据分开查询再关联,避免原始表中重复存储的Downtime被多次计数,参考SQL示例:

-- 先提取每个用户唯一的停机时间值
WITH User_Downtime_Map AS (
    SELECT 
        DISTINCT user_name, 
        downtime 
    FROM 你的原始数据表
),
-- 按用户+小时聚合完成数量
User_Hour_Stats AS (
    SELECT 
        user_name,
        hour_slot,
        SUM(finish_count) AS hour_finish_total
    FROM 你的原始数据表
    GROUP BY user_name, hour_slot
)
-- 关联两个结果集,最终查询结果里同一个用户的downtime仅出现一次
SELECT s.*, m.downtime 
FROM User_Hour_Stats s
LEFT JOIN User_Downtime_Map m 
    ON s.user_name = m.user_name

你可以基于这个查询结果生成SSRS报表,直接引用downtime字段就不会出现累加问题。

方案2:SSRS报表端修改表达式

如果你不方便调整数据集查询,可以直接修改报表中Downtime列的表达式,明确指定按用户维度取唯一值,不需要做累加:

  1. 右键点击Downtime列的单元格,选择「表达式」
  2. 输入以下表达式,注意替换其中的用户组名称为你报表中对应用户分组的实际名称:
=First(Fields!downtime.Value, "用户组名称")

因为同一个用户的Downtime值完全一致,用First()取该用户分组下的第一个值,或者用Max()/Min()都可以得到正确的单一数值,不会因为该用户有多条小时维度的记录就触发累加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:24:04