Используя куб Adventureworks DW 2008, я пытаюсь создать запрос MDX, который будет возвращать количество интернет-заказов, не имеющих определенного кода причины для заказа.
FactInternetSales имеет отношение «многие ко многим» с FactInternetSalesReason. Каждая продажа имеет 1 или более кодов причин.
Если я попытаюсь вернуть заказы, в которых не использовалась причина «По акции», я все равно буду учитывать заказы по акции, потому что у них есть и другие причины.
Как мне написать MDX, чтобы сказать, что если у этого заказа есть эта причина, не включать ее в подсчет, независимо от каких-либо других причин?
Эквивалентным SQL для хранилища данных Adventure Works sql будет:
select count(distinct salesordernumber) from FactInternetSales
where not exists (select salesorderNumber
from FactInternetSalesReason
where SalesReasonKey = 2
and FactInternetSales.SalesOrderNumber = FactInternetSalesReason.SalesOrderNumber
)