简体   繁体   中英

How to build MDX query for two periods of time?

I have the following MDX:

SELECT 
  NON EMPTY 
    {
      [Measures].[Returns]
     ,[Measures].[Returns]
    } ON COLUMNS
 ,NON EMPTY 
    {[Employees].[Company].[Company].ALLMEMBERS}
  DIMENSION PROPERTIES 
    MEMBER_CAPTION
   ,MEMBER_UNIQUE_NAME
   ON ROWS
FROM 
(
  SELECT 
    StrToSet
    ("[Exec Date].[Hierarchy].[Month Num].&[2014]&[1]"
     ,CONSTRAINED
    ) ON COLUMNS
  FROM [cbSales]
)
WHERE 
  IIF
  (
      StrToSet
      ("[Exec Date].[Hierarchy].[Month Num].&[2014]&[1]"
       ,CONSTRAINED
      ).Count
    = 1
   ,StrToSet
    ("[Exec Date].[Hierarchy].[Month Num].&[2014]&[1]"
     ,CONSTRAINED
    )
   ,[Exec Date].[Hierarchy].CurrentMember
  );

Both columns shows returned data for month 2014/01

I want to have data for the next month (2014/02) in the second column.

How can I change the query to achieve my goal.

I'll try to replicate with AdvWks cube, so currently not tested:

WITH 
  MEMBER [Measures].[ReturnsNextMth] AS 
    (
      [Measures].[Returns]
     ,[Exec Date].[Hierarchy].CurrentMember.NextMember
    ) 
SELECT 
  NON EMPTY 
    {
      [Measures].[Returns]
     ,[Measures].[ReturnsNextMth]
    } ON COLUMNS
 ,NON EMPTY 
    {
        [Employees].[Company].[Company].ALLMEMBERS
      * 
        [Exec Date].[Hierarchy].[Month Num].ALLMEMBERS
    } ON ROWS
FROM 
(
  SELECT 
    StrToSet
    ("[Exec Date].[Hierarchy].[Month Num].&[2014]&[1]"
     ,CONSTRAINED
    ) ON COLUMNS
  FROM [cbSales]
);

Something similar in AdvWks:

WITH 
  MEMBER [Measures].[ReturnsNextMth] AS 
    (
      [Measures].[Internet Order Count]
     ,[Date].[Calendar].CurrentMember.NextMember
    ) 
SELECT 
  NON EMPTY 
    {
      [Measures].[Internet Order Count]
     ,[Measures].[ReturnsNextMth]
    } ON COLUMNS
 ,NON EMPTY 
    {
        [Sales Territory].[Sales Territory].[Country].MEMBERS
      * 
        [Date].[Calendar].[Month].ALLMEMBERS
    } ON ROWS
FROM 
(
  SELECT 
    [Date].[Calendar].[Month].&[2008]&[1] ON COLUMNS
  FROM [Adventure Works]
);

This gives these results. I found this quite surprising as the sub-select seems to suggest we only have Jan-2008 available, but sub-select is a bit of a strange creature. This article explains: http://bisherryli.com/2013/02/08/mdx-25-slicer-or-sub-cube/ . So our measure [ReturnsNextMth] still functions ok.

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM