使用日期范围过滤器和年过滤器在MDX查询中过滤

时间:2017-12-04 13:40:56

标签: sql mdx olap olap-cube mondrian

我试图过滤我的MDX查询,有人可以帮我解决这个问题。 我的代码

Select
[Measures].[Net_Cost] on 0,
[State].[City] on 1

FROM 
[SALES]

WHERE
([Date].[Date.AYearly].[2017]),([Date].[Date.AMonthly].[1] : [Date].[Date.AMonthly].[12])

它会引发错误。

我想完成以下任务:

其中 年= 2017年,月份介于1和当月之间。

如何做到这一点。

提前致谢

2 个答案:

答案 0 :(得分:0)

也许在子查询中尝试一个过滤器,在外部查询中尝试另一个过滤器:

SELECT
   [Measures].[Net_Cost] on 0,
   [State].[City] on 1
FROM 
  (
   SELECT 
     [Date].[Date.AYearly].[2017] ON 0
   FROM [SALES]
  )
WHERE
([Date].[Date.AMonthly].[1] : [Date].[Date.AMonthly].[12])
;

答案 1 :(得分:0)

谢谢@ whythe1我做了类似的事情

SELECT 
NON EMPTY
 [Date].[Date.AYearly].[Year].[2017]:
 [Date].[Date.AYearly].[Year].[2017].PrevMember ON 0,

NON EMPTY
CROSSJOIN
(
    CROSSJOIN(
    {[Measures].[Net_Prod_Cost]},
    {[Territory].[Sales_Territory_Branch_Number].Members,
    [Territory].[Sales_Territory_Branch].Members}
    ),
    {[Products].[Products.SBM].[RYAN WEST]}
 ) ON ROWS

FROM [SALES]

WHERE
(
({[Date].[Date.AMonthly].[Month].[1] : 
     [Date].[Date.AMonthly].[Month].[11]})
)}

并且有效。

谢谢你的回答给了我一个想法。