2012-01-19 10 views
2

Извиняюсь заранее за кажущийся основной вопрос MDX. Я пытаюсь отфильтровать набор результатов MDX на основе нескольких комбинаций атрибутов измерения.MDX - Несколько условий Где и/или фильтра

Это мое измерение/меры раскладка:

Размеры:

[AccidentDate] 
Year 
Quarter 
Month 
Day 
Date 

[ItemInformation] 
ItemState 

[CoverageInformation] 
CoverageHiearchy 
----UserLine 
--- Coverage Code 

Меры:

CTDPaid 

Теперь я хочу, чтобы выбрать общую сумму от [CTDPaid] меры, сгруппированных по атрибут [ItemInformation].ItemState. Тем не менее, я хотел бы отфильтровать результаты этого запроса на основе нескольких условий фильтра.

Эти условия будут следующие, и будет оцениваться отдельно:

1. [CoverageInformation].[CoverageHiearchy].&[98]&[002] and [ItemInformation].ItemState.&[MI] 
2. [CoverageInformation].[CoverageHiearchy].&[98]&[004] and [ItemInformation].ItemState.&[MI] 
3. [CoverageInformation].[CoverageHiearchy].&[98]&[004] and [ItemInformation].ItemState.&[IL] 
4. [CoverageInformation].[CoverageHiearchy].&[98]&[002] and [ItemInformation].ItemState.&[IL] 

По существу, если бы я к порту над этим в T-SQL, где состояние, оно будет представлять собой следующее:

где

(ItemState = 'MI' and CoverageCode = '002' and UserLine = '98') 

и

(ItemState = 'MI' and CoverageCode = '004' and UserLine = '98') 

и

(ItemState = 'IL' and CoverageCode = '002' and UserLine = '98') 

и

(ItemState = 'IL' and CoverageCode = '004' and UserLine = '98') 

Подставляя это в MDX ломтерезки не будет функционировать, как я считаю, кросс присоединяется по одной и той же иерархии не поддерживаются.

Использование фильтра() Функция MDX для меня тоже не работает.

Я был бы очень признателен за помощь в формулировании правильного запроса MDX, чтобы правильно фильтровать мои результаты, как описано выше.

Спасибо любезно за ваше время

+0

Может CTDPaid быть в «МИ» и состояние «IL» в то же самое время? Если у вашего запроса нет результатов, потому что ваше условие - «ItemState =« MI »и ItemState =« LI'' – danihp

ответ

2

Попробуйте это решение:

SELECT 
    {...} On Columns, 
    {...} On Rows 
FROM (Select 
{([CoverageInformation].[CoverageHiearchy].&[98]&[002], [ItemInformation].ItemState.&[MI]), 
([CoverageInformation].[CoverageHiearchy].&[98]&[004], [ItemInformation].ItemState.&[MI]) 
([CoverageInformation].[CoverageHiearchy].&[98]&[004], [ItemInformation].ItemState.&[IL]) 
([CoverageInformation].[CoverageHiearchy].&[98]&[002], [ItemInformation].ItemState.&[IL])} On Columns 
From [CubeName]) 
+0

Спасибо, Ноу, это и помогло! – user1159554

Смежные вопросы