首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随时间变化的MDX计数(年数-不在一年内)

随时间变化的MDX计数(年数-不在一年内)
EN

Stack Overflow用户
提问于 2011-01-31 10:07:42
回答 2查看 811关注 0票数 0

我希望能够汇总多年来对某一产品的承诺-

每一年的新承诺数据如下所示:

代码语言:javascript
复制
Year    | Count of new commitments | (What I'd like - count of new commitments to date)  
1986    4        4  
1987    22       26  
1988    14       40  
1989    1        41  

我知道在一年内,你可以做年至今,月至今等,但我需要做多年。

给出前两列的mdx是(真的很简单-但我不知道从哪里开始):

代码语言:javascript
复制
select [Measures].[Commitment Count] on 0
, [Date Dim].[CY Hierarchy].[Calendar Year] on 1
from [Cube]

任何帮助都是最好的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-31 17:01:31

在MDX中,大致是这样的:

代码语言:javascript
复制
with member [x] as sum( 
    [Date Dim].[CY Hierarchy].[Calendar Year].members(0) : [Date Dim].[CY Hierarchy].currentMember,
    [Measures].[Commitment Count] 
)

select [x] on 0, [Date Dim].[CY Hierarchy].[Calendar Year] on 1 from [Cube]
票数 1
EN

Stack Overflow用户

发布于 2011-01-31 12:13:02

使用公用表表达式:

代码语言:javascript
复制
with sums (year,sumThisYear,cumulativeSum) 
as (
    select year
         , sum(commitments) as sumThisYear
         , sum(commitments) as cumulativeSum
      from theTable
     where year = (select min(year) from theTable)
     group by year
     union all
    select child.year
         , sum(child.commitments) as sumThisYear
         , sum(child.commitments) + parent.cumulativeSum as cumulativeSum
      from sums par
      JOIN thetable Child on par.year = child.year - 1
     group by child.year,parent.cumulativeSum
)
select * from sums

在parent.cumulativeSum上的分组中有一些“技巧”。我们知道这对于所有行都是相同的值,并且我们需要将它添加到sum(child.commitments)中,因此我们对它进行分组,以便SQL Server允许我们引用它。也许可以通过清理来去除所谓的“气味”,但它会起作用的。

警告:晚上11点15分,我所在的地方,写在我的头顶上,可能需要调整一两次。

编辑:在锚子句中忘记了group by,在

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4847056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档