Как я могу использовать подзапрос или (WITH) статистику в MDX Query?
У меня есть CustomerToFactor как мера и клиент как измерение. Теперь я хочу создать код MDX, как этот код SQL, но не могу. потому что (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.
2 ответа
Я думаю, что вы должны создать ссылку на измерение даты 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]
Я не очень понимаю смысл расчета:) Но в любом случае, в 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 строку для каждого клиента. Сумма ([Показатели]. [Ctf_price]) также отличается, так как она суммируется по всем клиентам