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

SSRS生成含全24小时的小时级面积图问题求助

解决SSRS面积图完整24小时横轴及0值显示问题

方案一:修改SQL补全无销量时段的0值

最稳妥的方式是从数据源层面补全数据,确保每个小时都有记录,无销量的时段直接返回0。把你的查询改成这样:

WITH HoursList AS (
    -- 生成00:00到23:00的完整24小时列表
    SELECT FORMAT(DATEADD(hh, n, '00:00'), 'HH:mm') AS SalesByHour
    FROM (
        -- 生成0到23的数字序列,用来构造小时
        SELECT TOP 24 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) - 1 AS n
        FROM [RC_BACK].[dbo].[TRAN] -- 用任意行数≥24的表就行,系统表比如sys.columns也可以
    ) AS Numbers
)
SELECT 
    hl.SalesByHour,
    ISNULL(SUM(t.TQty), 0) AS SalesQty
FROM HoursList hl
-- 左连接销售表,匹配对应小时的销售记录
LEFT JOIN [RC_BACK].[dbo].[TRAN] t
    ON DATEPART(hour, t.TRANDATETIME) = DATEPART(hour, CAST(hl.SalesByHour AS TIME))
    AND t.TRANCODE = 'SA'
GROUP BY hl.SalesByHour
ORDER BY hl.SalesByHour;

这个查询逻辑很直观:先构造一个包含所有24小时的临时列表,再把销售数据左连上去,没有匹配到销售记录的时段,用ISNULL把销量设为0,最后按小时排序,这样查出来的结果每个时段都有数据,直接给SSRS就能正常渲染完整横轴。

方案二:调整SSRS图表设置适配现有数据

如果不想修改SQL,也可以在SSRS里调整设置解决问题:

  • 把横轴类型从Scalar(标量轴)改成Category(类别轴)——标量轴只会渲染有数据的点,类别轴会显示所有指定的类别。
  • 处理空值:在图表数据面板右键点击SalesQty字段,选择「字段属性」,在「常规」标签设置「空值时显示的值」为0。
  • 绑定完整小时类别:额外新建一个只包含00:00到23:00的数据集(逻辑和方案一的HoursList一致),把横轴绑定到这个数据集的SalesByHour字段,再将销售数据和这个数据集关联,确保每个类别都能对应到数据(无数据的自动显示0)。

标量轴失效的原因

标量轴基于连续数值逻辑,SSRS只会在有数据的位置绘制点,缺失的时段不会自动填充0,所以固定分段的24小时场景更适合用类别轴。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:34:59