Sql server MDX集团及;计数

Sql server MDX集团及;计数,sql-server,mdx,business-intelligence,performancepoint,Sql Server,Mdx,Business Intelligence,Performancepoint,我有下面的MDX查询 WITH MEMBER Measures.Improvement AS [Measures].[School Evaluation] - ( [Measures].[School Evaluation] ,[Cycle].[Name].CurrentMember.PREVMEMBER ) MEMBER Measures.PreviousEvaluation AS ( [Measur

我有下面的MDX查询

WITH 
  MEMBER Measures.Improvement AS
     [Measures].[School Evaluation] 
   - 
     (
      [Measures].[School Evaluation]
     ,[Cycle].[Name].CurrentMember.PREVMEMBER
     )
  MEMBER Measures.PreviousEvaluation AS
     (
      [Measures].[School Evaluation]
     ,[Cycle].[Name].CurrentMember.PREVMEMBER
     )
  SELECT
     Measures.Improvement ON COLUMNS,
     Filter (
       { [Cycle].[Name].[Name].ALLMEMBERS }
     * { [School].[Name En].[Name En].ALLMEMBERS }
     , Measures.PreviousEvaluation > 0 
        AND 
         [Measures].[School Evaluation] > 0
     )
     ON ROWS
  FROM [SchoolCube];
此代码生成以下输出

现在我需要的是计算所有学校中出现的改善“-2,-1,0,…”,所以我有类似的东西

我怎样才能做到这一点


谢谢,

您必须添加另一个维度“改进”,该维度保存固定范围(如-10..+10)的可能值,或者根据数据动态构建范围

基于该维度表向多维数据集中添加第二个度量值组,并创建一个度量值“改进基数”,该度量值对改进值求和。这是简化以下步骤的辅助措施

现在,您可以创建新的计算度量值:

CREATE MEMBER CURRENTCUBE.[Measures].[Count Improvements] AS
SUM(IIF([Measures].[Improvement] = [Measures].[Improvement base], 1, 0));

也许您必须确定改进维度的所有成员的范围,以便对子项求和。

Google:Conditionalaggregation@sagi你能扩展你的评论吗?这是一个有趣的问题-我不认为答案很简单:如果答案像谷歌搜索一样简单,你能提供准确的url吗,谢谢你在这个话题上支持我。我开始执行这些步骤。但在我创建“改进基础”措施之后。解决方案未能生成为“MeasureGroup[SchoolCube].[Improvement]:不存在维度关系。度量值组“Improvement”与任何维度都不相关”。我无法找到与我的维度相关的改进基础。谢谢,如果打开多维数据集设计器,您可以在设计器的第二个选项卡上找到维度用法。您必须将度量值组“改进”(列中列出)链接到维度“改进”(行中可以找到)。在尺寸标注和度量值组的交点上,有一个包含链接说明的文本框,或者有一个灰色框。在后者中,单击灰色框右侧的省略号按钮,在维度和度量值组之间创建新链接。如果维度和度量值组使用完全相同的表或视图(甚至查询),则可以选择事实关系,否则,请选择常规关系并选择适当的属性(通常是维度的键属性)和正确的事实列。