Скобки () в MDX означают либо кортеж, либо перекрестное соединение, вы используете скобки в предложении WHERE. Попробуйте объединить два указанных года в набор фигурных скобок:
SELECT{Measures.[Amount]} ON 0
//---------- From / SubCube ----------
FROM [DL]
//---------- Slicers ----------
WHERE
(
{[BusinessDate].[BusinessDate].[Years].[2016],
[BusinessDate].[BusinessDate]. [Years].[2017]
}
, ([DL].[Num].[55].Lag(2) : [DL].[Num].[2305]))
примечание
Просто чтобы подтвердить.
Следующее MDX
действительно:
SELECT
NON EMPTY [Measures].[Internet Sales Amount] ON 0,
NON EMPTY [Date].[Calendar Year].MEMBERS ON 1
FROM [Adventure Works];
Возвращает это:
Но если мы переместим двухлетних участников в предложение WHERE, как, например, ваш сценарий, то это недопустимый MDX:
SELECT
NON EMPTY [Measures].[Internet Sales Amount] ON 0
FROM [Adventure Works]
WHERE ([Date].[Calendar Year].&[2005], [Date].[Calendar Year].&[2006]);
Сообщение об исключении:
Выполнение запроса ... Запрос (4, 1) Иерархия календарного года
используется более одного раза в функции Crossjoin. Выполнить завершено
Но если вы последуете моему предложению и добавите фигурные скобки, то оно действительно:
SELECT
NON EMPTY [Measures].[Internet Sales Amount] ON 0
FROM [Adventure Works]
WHERE ( {[Date].[Calendar Year].&[2005], [Date].[Calendar Year].&[2006]});
Результаты в