0

我有一个 CustomerToFactor 作为衡量标准和客户作为维度。现在我想创建一个类似这个 SQL 代码的 MDX 代码,但我做不到。因为 (WITH) 语句在 MDX 中有另一个含义。

    with Total_Customer(    
        select cus_id    
              ,sum(ctf_price) cus_total_price    
        from dbo.Customer    
        join dbo.CustomertoFactor on cus_id = ctf_cus_id    
        group by cus_id    
    )    
    select cus_id    
          ,cus_name    
          ,ctf_date    
          ,ctf_price    
          ,(cus_total_price / 100 * ctf_price) as Price_pro_customer    
    from dbo.Customer    
    join dbo.CustomertoFactor on cus_id = ctf_cus_id    
    join Total_Customer on Total_customer.cus_id = dbo.Customer.cus_id   


SELECT NON EMPTY { [Measures].[ctf_date]     
                  ,[Measures].[ctf_price] 
                  , (?)  Price_pro_customer    
                  } ON COLUMNS    
      ,NON EMPTY {[Customer].[Customer - cus_name].[Customer - cus_name].ALLMEMBERS}    
FROM [CustomerToFactor]  

感谢您的回答。但它不起作用。实际上,我希望它针对您命名的每个名称进行分组。例如:对于名称 Alex,只需计算 Alex(100+300 = 400) 和 Group by 的总和。

在此处输入图像描述

4

2 回答 2

0

我不太明白计算的重点:) 但无论如何,在 MDX 中,您可以像这样计算自己的度量:

WITH MEMBER [Measures].[Price_pro_customer] AS 
        (SUM([Measures].[ctf_price]) / 100 * [Measures].[ctf_price])

SELECT NON EMPTY { [Measures].[ctf_date]     
                 ,[Measures].[ctf_price] 
                 ,[Measures].[Price_pro_customer] 
                 } ON COLUMNS    
        ,NON EMPTY {[Customer].[Customer - cus_name].[Customer - cus_name].ALLMEMBERS}    
FROM [CustomerToFactor]

我不确定你会得到与 SQL 查询相同的结果,因为你有 [Customer].[Customer - cus_name].[Customer - cus_name].ALLMEMBERS 在基本上对客户名称执行 GROUP BY 的行.

因此,如果表中有同一客户的多行,则 MDX 查询的输出应该是每个客户的 1 行。SUM([Measures].[ctf_price]) 也不同,因为它对所有客户求和

于 2018-03-09T16:17:29.523 回答
0

我认为您应该创建对 ctf_date 的日期维度引用。那么你的 mdx 应该如下所示:

WITH MEMBER [Measures].[Price_pro_customer] AS
SUM([DimDate].[ctf_date].[All], [Measures].[ctf_price]) / 100 * [Measures].[ctf_price]

SELECT NON EMPTY { 
                   [Measures].[ctf_price] ,
                   [Measures].[Price_pro_customer]    
                 } ON COLUMNS ,   
       NON EMPTY {[Customer].[Customer - cus_name].[Customer - cus_name].ALLMEMBERS * 
                  [DimDate].[ctf_date].[ctf_date].ALLMEMBERS} ON ROWS    
FROM [CustomerToFactor]  
于 2018-03-13T02:43:03.237 回答