1

我们有一个具有日期时间字段 [Log Entry].[Time Entry] 的事实表。

我们想根据日期范围过滤以下查询: [日志条目].[时间条目] 在两个提供的日期之间(2 个参数:即 startdate 和 enddate)

SELECT 
  NON EMPTY { [Measures].[Average Total Time] } ON COLUMNS, 
  NON EMPTY { ([User Property].[UserProperty].[Id].ALLMEMBERS * [Log Entry].[Time Entry].[Logged On].ALLMEMBERS ) } 
DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS 
FROM [MyCube] 

我希望避免创建时间表/维度并能够将这些日期(通过参数传入)与 [日志条目].[时间条目] 进行比较。

SQL 的概念介于(somedate 介于 date1 和 date2 之间)。

我们应该怎么做?

4

1 回答 1

0

您应该使用范围表达式。请看这里:http: //msdn.microsoft.com/en-us/library/ms146001%28v=sql.105%29.aspx

您的 WHERE 子句应如下所示:

  WHERE (
    [Time].[Month Name].&[August 2009]
    :
    [Time].[Month Name].&[June 2012]
    ) 

更新 要在其中过滤轴,您应该使用 EXISTS 子句:

    * {EXISTS
   (
      {[Log Entry].[Time Entry].[Logged On].ALLMEMBERS}
    ,
    {[Log Entry].[Time Entry].&[20120101]:[Log Entry].[Time Entry].&[20130101]}
    )
于 2013-03-15T09:09:16.517 回答