获得结果甚至只有几年

问题描述 投票:3回答:3

MDX有一个很好的功能,我可以指定一系列成员:

SELECT ([Canada],[2006]:[2011]) on Rows,
      [Measures].members on Columns
FROM [Sales]

有没有办法计算偶数年的集合:{[2006], [2008], [2010]}?我正在寻找一种适用于大型集合的方法,因此手动列出年份不是一种选择。

mdx iccube
3个回答
2
投票

你可以使用filter functiondeclared functionMOD function来过滤你的功能(MOD从分区返回余数 - 比如Java中的%):

WITH
  FUNCTION isEven(Value _number) as Mod( Int(_number) , 2 ) = 0
SELECT
  FILTER( [Date].[Date].[Year] as t, isEven( Year( t.current.key) ) )  on 0
FROM [Cube]

如果您经常使用此过滤器,您可以在脚本中创建一次FilterEven声明函数(对于isEven()也是如此)


1
投票

试试这个。我使用冒险作品进行查询。对于mod逻辑,我从Mod Logic获得了帮助

WITH 
MEMBER [Measures].[Data Type] AS 
[Date].[Day of Year].CurrentMember.Properties ("Member_Value",TYPED) 

MEMBER [Measures].[IsEven] as
[Measures].[Data Type]-Int([Measures].[Data Type]/2)*2 

select {[Measures].[Internet Order Count]  }
on columns,
filter (
[Date].[Day of Year].[Day of Year],
[Measures].[IsEven]=0)
 on rows 
from [Adventure Works]

0
投票

另外,日期维度中的列可以有1,0表示年份是偶数还是奇数。然后只需在MDX查询中使用该列,无需执行上述所有操作

© www.soinside.com 2019 - 2024. All rights reserved.