2014-06-16 98 views
0

我開發了一個SSRS報表的MDX查詢,該報表具有一個名爲CurrentMonthAndAllOfLastYear的計算度量值,它應該將當前月份的淨銷售額與前一年的淨銷售額相加。不幸的是,計算出來的測量似乎總是總計每個淨銷售額。在MDX是:MDX計算所有時間的計算總計

WITH 
SET [CurrMonth] AS [Sales Period].[Sales Period].CurrentMember --Month 
SET [CurrYear] AS ANCESTORS([CurrMonth](0), 2) --Year 
SET [PriorYear] AS [CurrYear](0).LAG(1) -- Gets prior Year 

MEMBER [Measures].[CurrentMonthAndAllOfLastYearAmt] AS SUM({[CurrMonth], [PriorYear]}, Measures].[Net Sales]) 
MEMBER [Measures].[Debtors Collection Days] AS ([Measures].[Total Owing Amount] * 90)/[Measures].[CurrentMonthAndAllOfLastYearAmt] 

SELECT 
{ 
[Measures].[CurrentMonthAndAllOfLastYearAmt], 
[Measures].[Total Owing Amount], 
[Measures].[Debtors Collection Days], 
[Measures].[Net Sales] } ON COLUMNS, 
{ 
[Sales Period].[Sales Month].[Sales Month].ALLMEMBERS } ON ROWS 
FROM (SELECT (YTD(STRTOMEMBER('[Sales Period].[Sales Period].[Sales Month].&[2013-05-31T00:00:00]'))) ON COLUMNS 
FROM (SELECT (STRTOSET('[Sales Representative Mirror].[Sales Representative ID].&[261]')) ON COLUMNS 
FROM [Sales])) 

的MDX片斷產生如下:

Sales Month CurrentMonthAndAllOfLastYearAmt 
31/01/2013 $320,429.60 ... 
28/02/2013 $320,429.60 ... 
31/03/2013 $320,429.60 ... 
30/04/2013 $320,429.60 ... 
31/05/2013 $320,429.60 ... 

我需要下面的輸出(有沒有在2012年的任何銷售):

Sales Month CurrentMonthAndAllOfLastYearAmt 
31/01/2013 $0.00 ... 
28/02/2013 $0.00 ... 
31/03/2013 $0.00 ... 
30/04/2013 $18,931.10 ... 
31/05/2013 $22,557.22 ... 

任何幫助非常感謝。

回答

0

我不會使用一組來執行此操作,但使用ParallelPeriod MDX功能。

MEMBER [Measures].[CurrentMonthAndAllOfLastYearAmt] AS 
    ([Sales Period].[Sales Period].CurrentMember,[Measures].[Net Sales]) 
    + 
    (ParallelPeriod([CurrMonth](0), 1, [Sales Period].[Sales Period].CurrentMember), [Measures].[Net Sales]) 

好的問題是每次使用集合或每個MDX請求一次就評估集合。之後,你有上下文(使用或不在哪裏和子查詢上下文)。

+0

感謝您的好建議。我更新了我的詢問,我現在得到以下錯誤:銷售月\t CurrentMonthAndAllOfLastYearAmt 2013年1月31日\t#錯誤 2013年2月28日\t#錯誤 2013年3月31日\t#錯誤 2013年4月30日\t #Error 2013-05-31 \t#錯誤 – user3743432

+0

感謝您的好建議。我更新了我的詢問,我現在得到以下錯誤: 銷售月\t CurrentMonthAndAllOfLastYearAmt 2013年1月31日\t#錯誤 2013年2月28日\t#錯誤 2013年3月31日\t#錯誤 2013年4月30日\t#錯誤 2013-05-31 \t#錯誤 – user3743432

+0

你應該看看#Error的內容,它應該提示什麼是錯的。在iccube我只是問你也看看調試器;-) – ic3