带有2个行项的MDX查询

时间:2014-03-21 15:08:24

标签: mdx

我想知道所有客户的Max订单日期是什么 1 - 如何将两个行项放入查询中 2 - 如何获得最大日期 3 - 我也不想在查询中使用Amount,但看起来好像MDX需要一个Column来运行查询。

以下是对此查询的尝试。

Select [Measures].[Amount] On Columns,
[Dim Customer].[Cust #],Max([Dim Inv Date].[Actual Date]).MEMBERS ON ROWS
from [OperationsFinance]

1 个答案:

答案 0 :(得分:0)

可以有空列:

Select 
    {} On Columns,
    [Dim Customer].[Cust #].MEMBERS ON ROWS
FROM [OperationsFinance]

要使用crossjoin放置两行 - 使用crossjoin函数或星号运算符。尝试以下示例 - 您可能需要取消注释NON EMPTY函数以消除从交叉连接创建的空值:

Select 
    [Measures].[Amount] 
On Columns,

//NON EMPTY
    [Dim Customer].[Cust #] 
    *
    [Dim Inv Date].[Actual Date].MEMBERS 
ON ROWS
from [OperationsFinance]

要执行Max日期,我可以看到针对Adv Works多维数据集的以下示例。这取自Tomislav Piasevoli撰写的MDX书:

WITH 
MEMBER [Measures].[Max_Date2] AS
    MAX (
        EXISTING [Date].[Date].[Date].MEMBERS, 
        IIF([Measures].[Internet Sales Amount] = 0,
            NULL,
            [Date].[Date].CURRENTMEMBER.MEMBERVALUE
            )
    )
SELECT 

    {[Measures].[Internet Sales Amount], 
    [Measures].[Max_Date]} ON 0,

NON EMPTY
    {
    [Promotion].[Promotion].MEMBERS
    *
    [Date].[Calendar Year].MEMBERS
    }
ON 1

FROM [Adventure Works]

适应你:

WITH
MEMBER [Measures].[Max_Date] AS
    MAX (
        EXISTING [Dim Inv Date].[Actual Date].MEMBERS, 
        IIF([Measures].[Amount] = 0,
            NULL,
            [Dim Inv Date].[Actual Date].CURRENTMEMBER.MEMBERVALUE
            )
    )
SELECT 

    {[Measures].[Amount], 
    [Measures].[Max_Date]} ON 0,

NON EMPTY
    {
    [Dim Customer].[Cust #].MEMBERS
    *
    [Dim Inv Date].[Actual Date].MEMBERS
    }
ON 1

FROM [OperationsFinance]