2011-11-18 115 views
1

的会是怎样的MDX查询等同于:MDX相当于SQL查询

select * from tableName where somecount > num1 and somecount < num2? 

somecount是在我的情况的尺寸(而不是尺寸)。

据我所知,MDX查询中的WHERE子句不支持小于或大于操作。 somecount在我的情况是Timestamp。因为我想汇总用户传递参数的数据(可以汇总昨天,最近7天,最近15天,上个月等)。因此,预先计算时间戳并将其存储为年 - 月 - 日 - 时间将无济于事。

+1

为了实现 “somecount> NUM1” 你需要在MDX筛选读了()函数。 –

回答

1

由于语法相似,所以混合使用SQL和MDX存在一个常见错误。但MDX不像SQL。

我建议通过这个Gentle MDX Tutorial得到更好的理解。

Select * 

在MDX中没有*的等价物,您必须通过放置尺寸来指定您的坐标轴。例如,您可以使用[Measures] .members选择度量列表。

.. where somecount > num1 and somecount < num2? 

的翻译,这是使用MDX subselects,奇怪,但MDX where clause是不同的东西。它更像是:

Select [Measures].members on 0 
from (
    select {All the members that match your filter} from [MyCube] 
) 

有一对夫妇的方式让成员列表,检查MDX functions available列表以获得所有的想法是可行的。

祝您在MDX中迈出第一步。

0
SELECT MEMBERS ON ROWS FROM (SELECT Filter(filter) ON COLUMNS FROM [FACT_TABLE]) 

过滤器应该是这样的

Filter([TIME].[YEAR].[YEAR].AllMembers, (
[TIME].[YEAR].CurrentMember.member_caption>="2009" AND 
[TIME].YEAR].CurrentMember.member_caption<="2012")) 
0
SELECT Measures.members ON ROWS, 
     Dimension.members ON Columns 
    FROM Cube 
WHERE somecount.value > num1 
    AND somecount.value < num2