如何在MDX where子句中编写日期过滤器?

时间:2014-09-09 12:40:31

标签: tsql mdx

我是MDX的新手。请建议如何用MDX查询语言编写下面的T-SQL查询。

T-SQL:

    SELECT wp.date,Sum(wp.bbls_oil)   
         AS BBLSOIL_TOTAL,Sum(wp.bbls_water) 
         AS BBLSWATER_TOTAL,Sum(wp.mcf_prod) 
         AS MCF_PROD_TOTAL,Sum(wp.vent_flare)
        AS VENT_FLARE_TOTAL 
    FROM  well_prod_bst_horiz_og_2_yrs wp, well_index wi
    WHERE wp.fileno = wi.fileno 
      AND wp.date <= :startDate 
      AND wp.date >= :endDate
      AND wi.apino IN (:wellids) 
   GROUP BY wp.date ORDER BY wp.date ASC";

在上面的查询中,动态提供了开始和结束日期值。

1 个答案:

答案 0 :(得分:4)

假设您有名为BBLSOILBBLSWATERMCF_PRODVENT_FLARE_TOTAL的措施,并且您的日期属性名为[Date].[Date],而您的:startDate }包含[Date].[Date].&[20120101]:endDate包含[Date].[Date].&[20141231],您的多维数据集名为Name of your Cube,您可以写

SELECT {
       Measures.[BBLSOIL],
       Measures.[BBLSWATER],
       Measures.[MCF_PROD],
       Measures.[VENT_FLARE_TOTAL]
       }
       ON COLUMNS,

       [Date].[Date].&[20120101] : [Date].[Date].&[20141231]
       ON ROWS
  FROM [Name of your Cube]

我。即您在列轴上放置了包含所需度量列表的MDX集,并在行轴上放置了一个范围(由:指定)。 MDX不需要像SumGROUP BY这样的聚合,这些聚合由多维数据集定义处理。