2015-12-22 7 views
0

AX позволяет вводить базовый SQL в диапазоны просмотра. Например, в диапазоне просмотра AOT для значения соответствия вы можете ввести (StatRepInterval.Name == 'Weekly'). Это хорошо работает.Динамика AX 2012 Подзапрос в представлении

Однако мне нужно сделать более продвинутый поиск в представлении, используя подзапрос. Может ли кто-нибудь предложить способ сделать это?

Это то, что я хотел бы использовать, но получаю сообщение об ошибке: «Ошибка расширенного диапазона запроса: ошибка синтаксиса около 34.»

(StatRepInterval.Name == (ВЫБРАТЬ FIRSTONLY StatRepInterval.Name FROM StatRepInterval WHERE StatRepInterval.PrintDirection == 1 ORDER BY StatRepInterval.Name DESC))

Я пробовал много разных вариантов подзапроса, от прямого T-SQL до X ++ SQL, но ничего не работает.

Спасибо за помощь.

ответ

0

Я нашел способ сделать это. Это некрасиво, и я собираюсь оставить вопрос без ответа немного, если у кого-то еще будет более изящное решение.

  1. Создать исходный вид, содержащий все поля, которые я хочу вернуть, а также рассчитанные поля, содержащие результаты моего подзапроса.

  2. Создайте второй вид, который использует первый как источник данных и применяет все необходимые диапазоны.

Работы довольно красиво.

Возможно, неэффективно, если были большие таблицы данных, но это находится в относительно небольшом разделе AX.

+0

Производительность должна быть такой же, как и подзапрос. –

0

Подпрограммы не поддерживаются в выражениях запроса.

Это можно решить, используя дополнительные источники данных с внутренними или внешними соединениями, как вы заметили.

См. the spec и Axaptapedida в выражениях запроса.

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