我正在尝试将一个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年销售额创业年初至今一年前的订单日期为今年 等等..
答案 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];