Вам необходимо внести следующее изменение. Вместо
WHEN [CONTAINER INSTANCE DIMENSION].[Container Size] = '20'
нужно написать
WHEN [CONTAINER INSTANCE DIMENSION].[Container Size].CurrentMember.MEMBER_CAPTION = '20'.
В вашем запросе вы хотите выбрать свой множитель на основе значения размера контейнера. Чтобы получить значение, которое оценивается в данный момент, мы используем «Currentmember». Кроме того, вы проверяете свойство «MEMBER_CAPTION» вашего CURRENTMEMBER. Способ проверки значения не будет работать. MDX оценит
[CONTAINER INSTANCE DIMENSION].[Container Size] = '20'
в true, поскольку вы оцениваете атрибут измерения по значению. Следовательно, ваше предложение Else дает результат.
Ниже приведен пример AdventureWorks.
with member
[Measures].[Internet Sales AmountCase]
as
case
when [Product].[Size].CurrentMember.MEMBER_CAPTION = '38' then [Measures].[Internet Sales Amount]*1
when [Product].[Size].CurrentMember.MEMBER_CAPTION = '40' then [Measures].[Internet Sales Amount]*2
when [Product].[Size].CurrentMember.MEMBER_CAPTION = '46' then [Measures].[Internet Sales Amount]*3
else -99
end
select
{[Measures].[Internet Sales Amount],[Measures].[Internet Sales AmountCase]}
on columns,
([Date].[Month of Year].[Month of Year],[Product].[Size].[38]:[Product].[Size].[70])
on rows
from [Adventure Works]
Результаты: