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

如何在SSRS图表中设置19/20、21/22两个独立年度为系列组?

解决方案

1. 调整SQL查询生成透视数据集

通过CTE先按月份和目标年度组统计出勤数,再用PIVOT将年度组转为列,正好匹配你需要的输出结构:

WITH MonthlyAttendance AS (
    SELECT
        -- 提取月份编号和名称,用于后续排序和展示
        MONTH(C.YearMonth) AS MonthNumber,
        DATENAME(MONTH, C.YearMonth) AS MonthName,
        -- 标记目标年度组,跳过20/21年度
        CASE
            -- 根据你的年度定义调整条件,这里假设19/20是2019-2020自然年,21/22是2021-2022自然年
            WHEN YEAR(C.YearMonth) IN (2019, 2020) THEN '19/20'
            WHEN YEAR(C.YearMonth) IN (2021, 2022) THEN '21/22'
            ELSE NULL -- 过滤掉20/21年度数据
        END AS FiscalYearGroup,
        COUNT(1) AS AttendanceCount
    FROM xxx
    LEFT JOIN Calendar AS C ON xxx = xxx -- 替换为实际关联字段
    WHERE
        -- 限定时间范围,排除20/21年度(如果是财政年度,需调整日期区间)
        C.YearMonth BETWEEN '20190101' AND '20221231'
        -- 若20/21是财政年度(如2020年7月-2021年6月),替换为下面的条件:
        -- AND NOT (C.YearMonth BETWEEN '20200701' AND '20210630')
    GROUP BY
        MONTH(C.YearMonth),
        DATENAME(MONTH, C.YearMonth),
        YEAR(C.YearMonth)
)
-- 透视转换为列
SELECT
    MonthName,
    MonthNumber,
    ISNULL([19/20], 0) AS [19/20年度出勤数],
    ISNULL([21/22], 0) AS [21/22年度出勤数]
FROM MonthlyAttendance
PIVOT (
    SUM(AttendanceCount)
    FOR FiscalYearGroup IN ([19/20], [21/22])
) AS PivotedResult
ORDER BY MonthNumber;

关键说明:

  • 用ISNULL确保无数据的月份显示0,避免图表出现断点
  • 若你的年度是财政年度(如跨自然年),修改CASE和WHERE中的日期区间即可适配

2. SSRS图表配置

拿到上述数据集后,按以下步骤配置折线图:

  • 新建折线图,将MonthName拖到类别组(可在组属性中用MonthNumber排序,保证月份顺序正确)
  • 将19/20年度出勤数和21/22年度出勤数拖到值区域,SSRS会自动将这两列识别为独立的系列组
  • 若需手动配置系列组:右键图表→系列组→添加组→系列组,选择对应的年度出勤字段即可

这样就能生成两个独立的折线系列,完全跳过20/21年度数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:27:01