几年选定年份的年初至今的年度总和

时间:2015-02-25 11:03:14

标签: sql sharepoint mdx reportbuilder

我正在尝试将一个SQL语句放在一起,该语句在几年内按年份返回值的SUM,但是在年初至今。换句话说,通过选择年份来运行报告,我需要在年初至今的基础上选择年份的值。这可能是这样的:通过选择2015年,2014年到2010年,报告应该给出2015年2月25日,2014年和2014年2月25日等的2015年价值。等等。

然而,我只是想出了如何手动选择每年到期日期的日期值,但显然我在想。但是,我希望能够使用选定的年份参数使用我的SQL语句处理这些工作,并以某种方式添加月份和日期。

有没有人用SQL语句解决过这类问题,如果有的话,我错过了什么诀窍?

我当前的ytd数据的sql语句类似于以下内容: SELECT NON EMPTY {[Measures]。[Sales Turnover YTD],[Measures]。[Order Intake YTD]} ON COLUMNS FROM(SELECT(STRTOSET(@DateDate,CONSTRAINED)

这适用于一年,但我仍在寻求解决方案已有好几年了。

如上所述,我希望的结果是:在选择几个财政年度(例如2010-2015)之后,我会得到以下数值: 2015年销售额营业额年初至今的订单日期为今日 2014年销售额创业年初至今一年前的订单日期为今年 等等..

1 个答案:

答案 0 :(得分:1)

这是一个针对AdvWrks的脚本,用于计算每一年中ROWS的等效YTD总数:

WITH 
  SET [NonEmptyDates] AS 
    NonEmpty([Date].[Calendar].[Date].MEMBERS) 
  SET [LastNonEmptyDate] AS 
    Tail([NonEmptyDates]) 
  SET [SetDaysInCurrentYear] AS 
    Descendants
    (
      Exists
      (
        [Date].[Calendar].[Calendar Year]
       ,[LastNonEmptyDate].Item(0).Item(0)
      ).Item(0)
     ,[Date].[Calendar].[Date]
    ) 
  MEMBER [Measures].[NumDaysInCurrentYear] AS 
    Rank
    (
      [LastNonEmptyDate].Item(0)
     ,[SetDaysInCurrentYear]
    ) 
  MEMBER [Measures].[EquivYTD] AS 
    Aggregate
    (
      Head
      (
        Descendants
        (
          [Date].[Calendar].CurrentMember
         ,[Date].[Calendar].[Date]
        )
       ,[Measures].[NumDaysInCurrentYear]
      )
     ,[Measures].[Internet Sales Amount]
    ) 
SELECT 
  {
    [Measures].[Internet Sales Amount]
   ,[Measures].[EquivYTD]
  } ON 0
 ,[Date].[Calendar].[Calendar Year] ON 1
FROM [Adventure Works];