2017-02-17 68 views
0

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

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查询出了什么问题吗?或者还有什么其他方式可以产生期间期间差异。非常感谢!

回答

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子句continus那么我们就可以用上面的元组:

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];