【问题标题】:MDX to get last Sunday and SaturdayMDX 将在上周日和周六获得
【发布时间】:2014-03-19 16:46:04
【问题描述】:

我在 SSAS 2005 多维数据集上构建了 SSRS 2005 报告。该报告具有来自时间维度的开始日期和结束日期参数。我需要将默认值分别设置为上周日和上周六。 (财政周为周日至周六)

例如

开始日期:[时间].[日].&[20140309] 结束日期:[时间].[日].&[20140315]

我怎样才能动态地做到这一点?我的意思是这周比日期早,但下周应该是 3 月 16 日,3 月 22 日。我知道在 T-SQL 中怎么做,这会涉及到一些系统日期的计算,但是 MDX 呢?

【问题讨论】:

  • 您想将最后一个星期六和最后一个星期日包含在 `[Time].[Day]` 层次结构中吗?还是今天之前和之前的星期六,今天的星期天或今天之后的下一个星期天?
  • @FrankPl 时间层次结构具有财政年度、财政周和日期。你的意思是我把上周日、上周六放在每一行?
  • 不,我的问题是“我如何确定‘最后一个’周六/周日是什么”?我可以假设您需要时间维度中包含的最后一个星期六和星期日吗?我必须考虑当前日期吗?
  • @FrankPl 我的意思是在这个财政周(3 月 16 日至 22 日),每次打开报告时,它的默认开始日期和结束日期都应该是 20140309 和 20140315。或者下一个财政周(23 - 29 Mar),每次打开报表时,它的默认开始日期和结束日期都应该是 20140316 和 20140322。

标签: reporting-services ssas mdx


【解决方案1】:

你可以使用一些VBA Date functions available in MDX:

StrToMember('[Time].[Day].&['
            + Format(DateAdd('d', - DatePart('w', Now(), 1), Now()), 'yyyyMMdd')
            + ']'
           )

应该给你今天之前的最后一个星期六,并且

StrToMember('[Time].[Day].&['
            + Format(DateAdd('d', - DatePart('w', Now(), 1) - 6, Now()), 'yyyyMMdd')
            + ']'
           )

在那之前的最后一个星期日。

DateAdd('d', ...) 的第二个参数是要添加的天数。由于这在这里是负面的,我们可以回到过去那么多天。 DatePart('w', ...) 返回工作日编号(星期日 = 1,星期一 = 2,...)。因此,如果您从今天减去“工作日数”天,幸运的是您已经在上周六。再减去六天,您将在之前的最后一个星期日到达。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 2021-06-12
    • 2023-04-08
    • 2023-01-27
    相关资源
    最近更新 更多