MDX оставлен в запросе отчета SSRS

54
4

Я хочу отфильтровать некоторые коды продуктов из отчета в SSRS с помощью LEFT(), и у меня возникла проблема.

Это часть моего запроса:

FROM ( SELECT ( { [Plan type].[Plan type].&[100000002] } ) ON COLUMNS 
FROM ( SELECT ( STRTOSET(@ProducersName, CONSTRAINED) ) ON COLUMNS
FROM ( SELECT ( STRTOSET(@CalendarTime, CONSTRAINED) ) ON COLUMNS
FROM ( SELECT ( LEFT([Product].[Product code],3) <> 'ALE') ON COLUMNS --codes that I want to filter out
FROM ( SELECT ( LEFT([Product].[Product code],3) <> 'DBN' ) ON COLUMNS
FROM ( SELECT ( LEFT([Product].[Product code],3) <> 'DBR' ) ON COLUMNS
FROM [Sales]))))))

Проблема в том, что я не могу заставить ее работать, потому что я получаю некоторые синтаксические ошибки для тех, которые LEFT с кодами продуктов. Отдых работает отлично. Вы можете мне помочь?

спросил(а) 2016-06-09T10:03:00+03:00 4 года назад
1
Решение
66

Пожалуйста, выходите из мира SQL, это MDX.

LEFT([Product].[Product code],3) не имеет смысла. То, что вам нужно, вероятно, должно быть LEFT([Product].[Product code].&[foo].membername, 3). Но вы должны перебирать коды продуктов, чтобы фильтровать только те, которые соответствуют критериям.

Поэтому вместо LEFT([Product].[Product code],3) <> 'ALE', ниже синтаксически корректно.

FILTER([Product].[Product code].MEMBERS AS prd,
LEFT(prd.currentmember.name,3) <> 'ALE'
)

Вы можете разместить другие условия в концевых предложениях AND.

......FROM(SELECT 
FILTER([Product].[Product code].MEMBERS AS prd,
LEFT(prd.currentmember.name,3) <> 'ALE' AND
LEFT(prd.currentmember.name,3) <> 'DBN' AND
LEFT(prd.currentmember.name,3) <> 'DBR'
) ON 0 FROM [Sales]

Конечно, есть много более и более эффективных способов решения таких требований, но это просто для того, чтобы привести домой, как правильно сделать фильтрацию в этом случае.

ответил(а) 2016-06-09T11:15:00+03:00 4 года назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема