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

获取Case实体近7天创建/关闭数据并在SSRS报表图表展示的求助

优先修复SQL查询,而非改用SSRS表达式

不要直接换表达式,SQL是处理这类聚合统计的最优选择,SSRS表达式更适合报表渲染层的轻量逻辑调整,而非核心数据计算——用表达式处理每日统计会导致报表渲染变慢,且逻辑维护起来比SQL麻烦得多。

正确的SQL查询思路(供你修正参考)

核心要解决两个问题:生成连续的近7天日期(避免某天无数据时图表缺失日期)、分别统计每日创建/关闭数量并关联到日期序列:

WITH DateRange AS (
    -- 生成近7天的日期(含今日)
    SELECT DATEADD(day, -n, CAST(GETDATE() AS DATE)) AS ReportDate
    FROM (VALUES (0),(1),(2),(3),(4),(5),(6)) AS Numbers(n)
)
SELECT 
    dr.ReportDate,
    -- 无数据时补0,避免图表显示断层
    ISNULL(CreateStats.CreateCount, 0) AS 每日创建数量,
    ISNULL(CloseStats.CloseCount, 0) AS 每日关闭数量
FROM DateRange dr
-- 关联每日创建统计
LEFT JOIN (
    SELECT 
        CAST(CreatedDate AS DATE) AS CreateDate, 
        COUNT(*) AS CreateCount
    FROM [Case] -- Case是SQL关键字,需加方括号转义
    WHERE CreatedDate >= DATEADD(day, -6, CAST(GETDATE() AS DATE))
    GROUP BY CAST(CreatedDate AS DATE)
) CreateStats ON dr.ReportDate = CreateStats.CreateDate
-- 关联每日关闭统计
LEFT JOIN (
    SELECT 
        CAST(ClosedDate AS DATE) AS CloseDate, 
        COUNT(*) AS CloseCount
    FROM [Case]
    WHERE ClosedDate >= DATEADD(day, -6, CAST(GETDATE() AS DATE))
    GROUP BY CAST(ClosedDate AS DATE)
) CloseStats ON dr.ReportDate = CloseStats.CloseDate
ORDER BY dr.ReportDate;

你的SQL可能出错的常见原因

  • Case是SQL保留关键字,直接用会报错,必须用[Case]包裹表名
  • 日期过滤时没去除时间部分(比如CreatedDate带时分秒,直接和GETDATE()比较会漏掉当天部分数据),要转成DATE类型再判断
  • 没有处理无数据的日期,导致返回的日期不连续,图表显示异常

SSRS表达式的适用场景

如果已经通过SQL拿到了正确的结构化数据,仅需在报表中做小调整(比如把空值显示为0),可以用表达式,例如:
=IIF(Fields!每日创建数量.Value Is Nothing, 0, Fields!每日创建数量.Value)
但核心的统计逻辑,绝对优先用SQL实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:01:17