MDX ParallelPeriod CurrentMember

时间:2017-02-17 22:02:05

标签: sql-server ssas mdx

我想选择“2006季度1”的[paid amt]和“2005季度1”的ParallelPeriod。我的查询如下:

WITH

MEMBER [Measures].[ParallelPeriod Qtr] AS 
PARALLELPERIOD( [Svc Date].[Svc Date].[Svc Qtr], 4, [Svc Date].[Svc Date].CURRENTMEMBER )

SELECT  
NON EMPTY 
{ [Measures].[Pd Amt], [Measures].[ParallelPeriod Qtr] } 
ON COLUMNS, 
NON EMPTY 
{
[Svc Date].[Svc Date].[Svc Qtr].&[20061]
} 
ON ROWS 

FROM [health costings model]   

但是[Measures].[ParallelPeriod Qtr]没有返回值。

有谁知道我的MDX查询有什么问题?或者是否有任何其他方法来生成句点周期差异。非常感谢!

1 个答案:

答案 0 :(得分:2)

我认为您需要使用您的年级并找到上一年度的四分之一?

以下是否会返回任何内容?

SELECT  
  NON EMPTY { [Measures].[Pd Amt], [Measures].[ParallelPeriod Qtr] } ON COLUMNS, 
  NON EMPTY 
    PARALLELPERIOD( 
       [Svc Date].[Svc Date].[Svc Year]
     , 1
     , [Svc Date].[Svc Date].[Svc Qtr].&[20061] 
    )
  ON ROWS 
FROM [health costings model];

就您最初所做的事情而言,您可能不必担心功能PARALLELPERIOD,因为您可以尝试使用.LAG(4)。所以它可能会简化为:

SELECT  
  NON EMPTY { [Measures].[Pd Amt], [Measures].[ParallelPeriod Qtr] } ON COLUMNS, 
  NON EMPTY 
     [Svc Date].[Svc Date].[Svc Qtr].&[20061].LAG(4)
  ON ROWS 
FROM [health costings model];

如果您想继续使用WITH条款,那么我们可以在元组中使用上述内容:

WITH 
MEMBER [Measures].[ParallelPeriod Qtr] AS 
   (
     [Svc Date].[Svc Date].CURRENTMEMBER.LAG(4)
    ,[Measures].[Pd Amt]
   )
SELECT  
  NON EMPTY 
       { [Measures].[Pd Amt]
       , [Measures].[ParallelPeriod Qtr] } ON 0, 
  NON EMPTY 
    [Svc Date].[Svc Date].[Svc Qtr].&[20061] 
    ON 1
FROM [health costings model];