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

如何创建包含全年每日空白行的SSRS Tablix

SSRS 365天库存台账Tablix实现方案

1. 生成基准日期数据集

首先做独立的日期基准数据集,生成从当日开始连续365天的日期序列,作为Tablix的行数据源,避免业务表缺日期导致行不全。SQL Server环境直接用以下查询即可:

WITH DateSequence AS (
    SELECT CAST(GETDATE() AS DATE) AS dt
    UNION ALL
    SELECT DATEADD(DAY, 1, dt)
    FROM DateSequence
    WHERE dt < DATEADD(DAY, 364, CAST(GETDATE() AS DATE))
)
SELECT dt AS date FROM DateSequence
OPTION (MAXRECURSION 365)

查询返回刚好365行日期,全部为DATE类型(不带时分秒),避免后续匹配时因为时间精度问题匹配失败。

2. 搭建Tablix基础结构

将上述日期数据集绑定到Tablix,保留4个数据列:

  • 第1列:绑定date字段,设置日期显示格式(如yyyy-MM-dd)
  • 第2列:列名设为inbound(入库),暂不绑定字段
  • 第3列:列名设为outbound(出库),暂不绑定字段
  • 第4列:列名设为total(总计),暂不绑定字段

3. 匹配出入库数据

使用Lookup函数分别从两个独立业务数据集匹配对应日期的出入库数值,直接在对应单元格写入表达式即可:
注意:入库、出库数据集的日期字段请统一转为DATE类型,和基准日期格式保持一致

  • inbound列单元格表达式:
=CDbl(Lookup(Fields!date.Value, Fields!inbound_date.Value, Fields!inbound_qty.Value, "ds_inbound")) + 0

上述表达式中ds_inbound替换为你自己的入库数据集名称,inbound_date为入库单日期字段,inbound_qty为入库数量字段,末尾+0是为了把匹配不到值的空单元格统一转为0,方便后续计算。

  • outbound列单元格表达式逻辑一致,替换为出库数据集对应字段即可:
=CDbl(Lookup(Fields!date.Value, Fields!outbound_date.Value, Fields!outbound_qty.Value, "ds_outbound")) + 0

ds_outbound替换为你自己的出库数据集名称。

4. 计算累计结余

total列是从当日开始的累计库存结余,不要直接用当日入库减当日出库,要用RunningValue做逐行累计计算,表达式写在total列单元格:

=RunningValue(
    ReportItems!inbound.Value - ReportItems!outbound.Value,
    Sum,
    "Tablix1"
)

表达式中Tablix1替换为你当前Tablix的实际控件名称,逻辑是从第一行(当日)开始逐行累加每日出入库差值,得到当日的实际库存结余。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:18:16