Currentmember.Prevmember不行吧,如果我Currentmember是二季度,Currentmember.Prevmember得到的是一季度。我在阐明一下年  08                               09
季 Q1,Q2,Q3,Q4                     Q1,Q2,Q3,Q4
月 1,2,3,4,5,6,7...12            1,2,3,4,5,6,7...12 目前09年的有效销量去到09年5月份如果当前查询的time的currentmember是09年Q2
我想要的同比结果是
09.Q2/08.Q2=(09年4,5月销量)/(08年4,5月销量)        能在同期剥除无效当期月份销量    而用ParallelPeriod函数只能简单地得到
09.Q2/08.Q2=(09年4,5月销量)/(08年4,5,6月销量)
-----------------------------------------------------------------
如果当前查询的time的currentmember是09年
我想要的同比结果是
09/08=(09年1~5月销量)/(08年1~5月销量)        能在同期剥除无效当期月份销量    而用ParallelPeriod函数只能简单地得到
09/08=(09年1~5月销量)/(08年1~12月销量)

解决方案 »

  1.   

    有点麻烦。
    因为季本身就是按月聚拿。如何拿从其中去一个月?而且,还要侦测当前的季几个月份是NULL的,再依次减去相应的月份。
    我看这事只能手工解决,不使用季的聚合。手动 SUM 需要的月份来作同比。
      

  2.   

    考虑一下 Cousin 和 IsEmpty 看看。
      

  3.   

    我昨天晚上想了一下,将问题转为求QTD可能更好办.
    WITH 
    MEMBER MEAUSERS.[QTD8] AS 'SUM(QTD([TIME].CURRENTMEMBER),[MEASURES].[UNIT SALES])',SOLE_ORDER=1
    MEMBER MEAUSERS.[QTD7] AS 'SUM(QTD(Cousin([TIME].CURRENTMEMBER,[TIME].[1997]),[MEASURES].[UNIT SALES])',SOLE_ORDER=2
    MEMBER MEASURES.[QTD8-7] AS '[QTD8]-[QTD7]',SOLE_ORDER=3SELECT { [QTD8-7] } ON 0,
    {[TIME].[1998].[Q1].[3],[TIME].[1998].[Q1].[6],[TIME].[1998].[Q1].[9],[TIME].[1998].[Q1].[12]} ON 1
    FROM SALES只要将上式中的 [TIME].[1998].[Q1].[3] 等替成查找98年对季度的非空月替换即可.
      

  4.   

    写错了.
    只要将上式中的 [TIME].[1998].[Q1].[3] 等替成查找98年对季度的最后一个非空月即可.查找季下的最后一个非空月。'Tail(Filter([Time].[Month].Members, Not IsEmpty([Time].CurrentMember)),1)'
    然后用  [membername].item(0).item(0) 形式引用。也可以改成类拟的。查找非空的季,然后用秩引用,再查找每个季下的最后一个非空月。