计算今年完成的天数,然后使用 Head 函数获取上一年的相同日期集 - 将这些日期集聚合在一起。
这是一个针对 AdvWrks 立方体的插图:
WITH
SET [DaysThisYear] AS
Descendants
(
[Date].[Calendar].[Calendar Year].&[2007]
,[Date].[Calendar].[Date]
)
MEMBER [Measures].[posOfCurrentDate] AS
Rank
(
[Date].[Calendar].CurrentMember
,Descendants
(
[Date].[Calendar].Parent.Parent.Parent.Parent
,[Date].[Calendar].[Date]
)
)
MEMBER [Measures].[prevEquivMTD] AS
Sum
(
Head
(
Descendants
(
[Date].[Calendar].Parent.Parent.Parent.Parent.PrevMember
,[Date].[Calendar].[Date]
)
,[Measures].[posOfCurrentDate]
)
,[Measures].[Internet Sales Amount]
)
MEMBER [Measures].[posCurrentYear] AS
[Date].[Calendar].Parent.Parent.Parent.Parent.Member_Caption
SELECT
{
[Measures].[posCurrentYear]
,[Measures].[posOfCurrentDate]
,[Measures].[Internet Sales Amount]
,[Measures].[prevEquivMTD]
} ON 0
,
[Date].[Calendar].[Date].&[20050111]
:
[Date].[Calendar].[Date].&[20080611] ON 1
FROM [Adventure Works];
这是上述作为一个单一的措施:
WITH
MEMBER [Measures].[Internet Sales Amount prevEquivMTD] AS
Sum
(
Head
(
Descendants
(
[Date].[Calendar].Parent.Parent.Parent.Parent.PrevMember //previous year
,[Date].[Calendar].[Date]
)
,Rank
(
[Date].[Calendar].CurrentMember
,Descendants
(
[Date].[Calendar].Parent.Parent.Parent.Parent //current year
,[Date].[Calendar].[Date]
)
)
)
,[Measures].[Internet Sales Amount]
)
SELECT
{
[Measures].[Internet Sales Amount]
,[Measures].[Internet Sales Amount prevEquivMTD]
} ON 0
,
[Date].[Calendar].[Date].&[20050111]
:
[Date].[Calendar].[Date].&[20080611] ON 1
FROM [Adventure Works];
不幸的是,它与Internet Sales Amount 度量相关,所以不是很通用。诸如prev equiv mtd 或Year on Year growth 之类的通用计算通常添加到独立于日期维度的帮助器Time Caculation 帮助器维度中。