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

MDX中如何计算Count累计和至小于Stock值并统计累加行数

实现方案

我们通过定义MDX计算成员实现需求,你可以直接使用调整后的查询语句:

WITH
-- 固定取DEKA产品组的总库存值,避免随时间维度变化产生取值误差
MEMBER [Measures].[TotalStock] AS 
( [Product Group].[Group].&[DEKA], [Measures].[Stock], [Date].[Year Month].[All] )

-- 按年月升序从当前行往后累加Count值,如果需要从首行开始累计,把范围换成 NULL:[Date].[Year Month].CurrentMember
MEMBER [Measures].[累计Count] AS 
SUM(
    [Date].[Year Month].CurrentMember:NULL,
    [Measures].[Count]
)

-- 统计满足累计Count小于总库存的总行数
MEMBER [Measures].[累计行数] AS 
COUNT(
    FILTER(
        [Date].[Year Month].Members,
        SUM(
            [Date].[Year Month].CurrentMember:NULL,
            [Measures].[Count]
        ) < [Measures].[TotalStock]
    )
)

SELECT
{
    [Measures].[Count],
    [Measures].[Stock],
    [Measures].[累计Count],
    [Measures].[累计行数]
} ON COLUMNS,
( 
    [Product Group].[Group].&[DEKA], 
    -- 筛选出符合累计条件的年月行
    FILTER(
        [Date].[Year Month].Members,
        [Measures].[累计Count] < [Measures].[TotalStock]
    )
) ON ROWS
FROM [CUBENAME]

逻辑说明

  • 行维度增加了Filter判断,只会返回累计Count未超过总库存的行,自动停止在累计和超过Stock的前一行
  • 如果你的需求是从首个年月开始向前累加而非从当前行向后累加,替换累计Count和累计行数中的求和范围即可,注释中已经给出替换方案
  • 累计行数每一行都会返回满足条件的总行数,如果你只需要在结果末尾展示该值,可以把该计算成员移到行维度最后单独输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:06:05