如果您想将 12 名成员向前移动,则使用 Adv Works,您可以通过多种方式进行导航。
试试下面的。它应该在currentmember 前 12 天返回日期:
WITH
MEMBER [MEASURES].[EFF INJ DT] AS
[Date].[Calendar].CurrentMember.LEAD(12).MEMBERVALUE
SELECT
{[MEASURES].[EFF INJ DT]} ON 0,
{[Date].[Calendar].[Month].&[2006]&[4].CHILDREN} ON 1
FROM [Adventure Works];
看起来您想返回未来 12 个月的日期。
所以首先我们需要通过ANCESTOR 函数与currentmember 对应的年份> 然后使用COUSIN 函数前进到对应的日期,如下所示:
WITH
MEMBER [MEASURES].[EFF INJ DT] AS
COUSIN(
[Date].[Calendar].CurrentMember,
ANCESTOR(
[Date].[Calendar].CurrentMember,
[Date].[Calendar].[Calendar Year]).LEAD(1)
).membervalue
SELECT
{[MEASURES].[EFF INJ DT]} ON 0,
{[Date].[Calendar].[Month].&[2006]&[4].CHILDREN} ON 1
FROM [Adventure Works];
适应您的场景并假设INJURY DATE 是多级user hierarchy' that contains another level calledCalendar Year`,您可以执行以下操作:
WITH
MEMBER [MEASURES].[EFF INJ DT] AS
COUSIN(
[INJURY DATE].CurrentMember,
ANCESTOR(
[INJURY DATE].CurrentMember,
[INJURY DATE].[Calendar Year]).LEAD(1)
).MEMBERVALUE
SELECT
{[MEASURES].[EFF INJ DT]} ON 0,
{[INJURY DATE].[DATE].Members} ON 1
FROM [Adventure Works];
编辑
通过 VBA 工具,我们在 Adv Wrks 中有以下内容:
WITH
MEMBER [MEASURES].[EFF INJ DT] AS
DATEADD(
"M",
12,
[Date].[Calendar].CurrentMember.membervalue
)
SELECT
{[MEASURES].[EFF INJ DT]} ON 0,
{[Date].[Calendar].[Month].&[2006]&[4].CHILDREN} ON 1
FROM [Adventure Works];
适应您的场景:
WITH
MEMBER [MEASURES].[EFF INJ DT] AS
DATEADD(
"M",
12,
[INJURY DATE].CurrentMember.membervalue
)
SELECT
{[MEASURES].[EFF INJ DT]} ON 0,
{[INJURY DATE].[DATE].Members} ON 1
FROM [Adventure Works];