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

SSRS矩阵中对比YellVA与ATP系列成绩值的实现方法求助

SSRS矩阵实现ATP成绩与YellVA基线对比方案

1. 数据集预处理(SQL层面)

先通过查询把每个ATP行对应的YellVA基线成绩关联出来,简化SSRS端计算。示例SQL:

SELECT 
    学生ID,
    学生姓名,
    科目ID,
    科目名称,
    AspectShortName,
    AspectValue,
    -- 用窗口函数获取对应学生+科目的YellVA基线值
    MAX(CASE WHEN AspectShortName = 'YellVA' THEN AspectValue END) 
        OVER (PARTITION BY 学生ID, 科目ID) AS BaselineScore
FROM 成绩表
WHERE AspectShortName IN ('YellVA', 'ATP1', 'ATP2', 'ATP3')

2. 矩阵布局设计

  • 行组:依次添加「学生ID」「学生姓名」「科目名称」(按需调整层级,确保每个科目下的ATP数据归为一组)
  • 列组:添加「AspectShortName」,并设置筛选器:AspectShortName IN ("ATP1", "ATP2", "ATP3")(隐藏YellVA列,仅展示跟踪点)
  • 数据单元格:
    • 显示ATP成绩:直接绑定 =Fields!AspectValue.Value
    • 显示对应基线成绩:通过行组上下文获取基线值,表达式为 =First(Fields!BaselineScore.Value, "科目名称组")(「科目名称组」需与设计器中行组的科目分组名称一致)
    • 可选:计算成绩差异,表达式为 =CDbl(Fields!AspectValue.Value) - CDbl(First(Fields!BaselineScore.Value, "科目名称组"))

3. 优化与排错

  • 数据类型转换:若AspectValue为字符串类型,必须用CDbl()等函数转成数值后再计算,避免类型错误
  • Lookup函数替代方案:若无法修改SQL查询,可在SSRS中用Lookup匹配唯一键获取基线值:
    =Lookup(Fields!学生ID.Value & "|" & Fields!科目ID.Value & "|YellVA", 
            Fields!学生ID.Value & "|" & Fields!科目ID.Value & "|" & Fields!AspectShortName.Value, 
            Fields!AspectValue.Value, 
            "数据集名称")
    
  • 条件格式:给差异值添加颜色标记,比如高于基线标绿色:
    选中数据单元格 → 右键「字体」→ 颜色表达式:
    =IIF(CDbl(Fields!AspectValue.Value) > CDbl(First(Fields!BaselineScore.Value, "科目名称组")), "Green", "Red")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:31:04