2014-09-29 85 views
0

我需要從多維數據集中提取最近24小時的數據。下面是我寫的MDX,但它不會根據當前時間(系統時間)返回數據。MDX - 提取最近24小時的數據

SELECT 
    [Date].[Calender-Year_Quarter_Month_Date].[Date] ON ROWS 
,{[Measures].[Delay In Mintues]} ON COLUMNS 
FROM 
(
    SELECT 
     { 
      StrToMember 
      ("[Date].[Calender-Year_Quarter_Month_Date].[Date].&[" 
       + 
       Format 
       (
        Now() - 1 
       ,'yyyyMMdd' 
       ) 
      + "]" 
     ) 
     * 
      (
      [Time].[Time-Hour_Time].[Hour].&["+FORMAT(NOW(),"HH")+"] 
      : 
      [Time].[Time-Hour_Time].[Hour].&[23].&[23:59] 
     ) 
     } 
    + 
     { 
      StrToMember 
      ("[Date].[Calender-Year_Quarter_Month_Date].[Date].&[" 
       + 
       Format 
       (
        Now() 
       ,'yyyyMMdd' 
       ) 
      + "]" 
     ) 
     * 
      (
      [Time].[Time-Hour_Time].[Hour].&[0].&[00:00] 
      : 
      [Time].[Time-Hour_Time].[Hour].&["+FORMAT(NOW(),"HH")+"] 
     ) 
     } ON COLUMNS 
    FROM [Delay Reasons] 
); 
+0

爲什麼你使用子查詢而不是'WHERE'子句? – whytheq 2014-09-29 11:44:43

+0

是在每個範圍的末尾需要'&[00:00]? – whytheq 2014-09-29 11:46:15

回答

0

(注:未測試)

工作的呢?

SELECT 
    [Date].[Calender-Year_Quarter_Month_Date].[Date] ON ROWS 
,{[Measures].[Delay In Mintues]} ON COLUMNS 
FROM [Delay Reasons] 
WHERE 
    { 
     StrToMember 
     ("[Date].[Calender-Year_Quarter_Month_Date].[Date].&[" 
      + 
       Format 
       (
       Now() - 1 
       ,'yyyyMMdd' 
      ) 
      + "]" 
     ) 
     * 
     (
      [Time].[Time-Hour_Time].[Hour].&["+FORMAT(NOW(),"HH")+"] 
     : 
      [Time].[Time-Hour_Time].[Hour].&[23].&[23:59] 
     ) 
    } 
    + 
    { 
     StrToMember 
     ("[Date].[Calender-Year_Quarter_Month_Date].[Date].&[" 
      + 
       Format 
       (
       Now() 
       ,'yyyyMMdd' 
      ) 
      + "]" 
     ) 
     * 
     (
      [Time].[Time-Hour_Time].[Hour].&[0].&[00:00] 
     : 
      StrToMember 
      (
      "[Time].[Time-Hour_Time].[Hour].&[" + Format(Now(),"HH") + "].&[00:00]" 
     ) 
     ) 
    };