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

如何编写DAX计算:年度总计取年末最新值而非SUM求和

解决DAX年度总计取最晚记录金额的问题

要实现年度总计不取求和值,而是取该年度最后一条记录的金额,我们可以通过DAX中的变量和上下文筛选来完成。下面分两种常见场景给出解决方案:

场景1:数据表中已有单独的「年度」列

如果你的数据表(比如叫财务数据表)里已经有专门的年度列(比如2023、2024这类值),可以用这个度量值:

年度最晚金额 = 
VAR 年度最大日期 = CALCULATE(MAX('财务数据表'[日期]), ALLEXCEPT('财务数据表', '财务数据表'[年度]))
RETURN CALCULATE(SUM('财务数据表'[金额]), '财务数据表'[日期] = 年度最大日期)

公式解释:

  1. 年度最大日期变量:用ALLEXCEPT保留当前的年度上下文,去除其他筛选器,计算出该年度的最晚日期。
  2. 返回结果:在筛选出「等于年度最大日期」的记录后,返回对应的金额总和(如果同一天只有一条记录,用MAX('财务数据表'[金额])结果一致)。

场景2:需要从「日期」列提取年度

如果你的表中没有单独的年度列,需要通过日期自动提取年度,可以用这个版本:

年度最晚金额 = 
VAR 当前年度 = YEAR(MAX('财务数据表'[日期]))
VAR 年度最大日期 = CALCULATE(MAX('财务数据表'[日期]), YEAR('财务数据表'[日期]) = 当前年度)
RETURN CALCULATE(SUM('财务数据表'[金额]), '财务数据表'[日期] = 年度最大日期)

特殊情况处理:同一天有多条记录

如果你的「最晚记录」指的是同一天有多条记录时取最后一条(而非求和),可以把公式中的SUM换成LASTNONBLANKVALUE,确保返回的是单条最晚记录的金额:

年度最晚金额 = 
VAR 年度最大日期 = CALCULATE(MAX('财务数据表'[日期]), ALLEXCEPT('财务数据表', '财务数据表'[年度]))
RETURN LASTNONBLANKVALUE('财务数据表'[日期], '财务数据表'[金额])

使用方法:

把原来报表中用于求和的度量值替换成这个「年度最晚金额」度量,当你在视觉对象中按年度分组时,总计行就会自动显示该年度最后一条记录的金额(比如你提到的-3416261278),而不是全年金额的总和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:08:54