我将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的总和。
答案 0 :(得分: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])也是不同的,因为它总结了所有客户
答案 1 :(得分: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]