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

SSRS报表如何合并两个分组位置的每日统计结果?

SSRS报表合并LOC3与LOC4分组并正确计算统计值

一、调整位置行组的分组规则

在位置行组的分组依据中,替换原Fields!Location.Value为以下表达式,将LOC3、LOC4统一映射为「Combo Loc 3-4」,其他位置保留原名:

=IIF(Fields!Location.Value IN ("LOC3", "LOC4"), "Combo Loc 3-4", Fields!Location.Value)

报表会自动将LOC3和LOC4的行合并到同一分组下。

二、修正DailyVisitorCount统计表达式

针对合并后的分组,直接使用行组作用域求和即可确保统计正确:

=Sum(Fields!VisitsCount.Value, "LocationRowGroup")

注:LocationRowGroup需替换为你实际的位置行组名称,确保作用域覆盖整个分组。

三、修正DailyOverCapacityCount超容计算表达式

调整Switch逻辑,统一处理LOC3和LOC4的超容规则,再求和得到合并组的总超容值:

=Sum(SWITCH(
    Fields!Location.Value = "LOC1" AND Fields!VisitsCount.Value > 24, Fields!VisitsCount.Value - 24, 
    Fields!Location.Value = "LOC2" AND Fields!VisitsCount.Value > 16, Fields!VisitsCount.Value - 16, 
    Fields!Location.Value IN ("LOC3", "LOC4") AND Fields!VisitsCount.Value > 7, Fields!VisitsCount.Value - 7,
    Fields!Location.Value = "LOC5" AND Fields!VisitsCount.Value > 11, Fields!VisitsCount.Value - 11,  
    True, 0
))

此表达式会分别计算LOC3、LOC4的超容差值再累加,比如LOC3超1、LOC4超5时,总和为6,符合预期。

四、解决无数据时的0值显示问题

若数据库中部分日期没有LOC3/LOC4的记录,报表会默认不显示对应行或返回空值。需修改数据集查询,补全所有日期与位置的组合:

-- MS SQL 2016 数据集查询示例
WITH DateRange AS (
    -- 生成用户选择的日期范围
    SELECT CAST(@StartDate AS DATE) AS VisitDate
    UNION ALL
    SELECT DATEADD(DAY, 1, VisitDate)
    FROM DateRange
    WHERE VisitDate < CAST(@EndDate AS DATE)
),
Locations AS (
    -- 定义所有需统计的位置及对应容量
    SELECT 'LOC1' AS Location, 24 AS Capacity
    UNION ALL SELECT 'LOC2', 16
    UNION ALL SELECT 'LOC3',7
    UNION ALL SELECT 'LOC4',7
    UNION ALL SELECT 'LOC5',11
)
-- 左连接访客数据,空值补0
SELECT 
    dr.VisitDate,
    l.Location,
    l.Capacity,
    ISNULL(v.VisitsCount, 0) AS VisitsCount
FROM DateRange dr
CROSS JOIN Locations l
LEFT JOIN YourVisitorTable v ON dr.VisitDate = v.date AND l.Location = v.Location
OPTION (MAXRECURSION 0)

替换YourVisitorTable为实际的访客数据表名,这样每个日期每个位置都会有记录,空访客数会被设为0,报表合并组即可正常显示每日统计。

五、平均值计算调整

基于合并后的分组计算平均值,需指定行组作用域:

=Sum(...) / CountDistinct(Fields!VisitDate.Value, "LocationRowGroup")

将Sum(...)替换为对应的访客数或超容数求和表达式,LocationRowGroup替换为实际行组名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:50:27