Вложенный запрос Dynamics AX - PullRequest
       35

Вложенный запрос Dynamics AX

0 голосов
/ 30 августа 2011

Может быть, я упускаю что-то простое, но есть ли способ написать вложенный запрос в AX? Я попробовал синтаксис, который, как мне показалось, будет работать, но безуспешно.

Следующее стандартное выражение SQL выполнит то, что я пытаюсь сделать, но мне нужно сделать это в AX, а не в SQL.

SELECT table1.column1A, table1.column1B, 
    (SELECT Top 1 column2B FROM table2 
        WHERE table1.column1A = table2.column2A 
        ORDER BY table2.column1A) 
    AS lookupResult 
FROM table1

Моя проблема в том, что table1 имеет отношение один-ко-многим с table2, и, поскольку у AX нет функции DISTINCT, о которой я знаю, я получаю много копий каждой записи при использовании оператора JOIN.

Спасибо

Ответы [ 3 ]

5 голосов
/ 30 августа 2011

Вложенные запросы не поддерживаются в AX.

Один из способов обойти пропущенное отличительное - использовать group by (предполагая, что максимальное значение column2B интересно):

while select column1A, column1B from table1
    group column1A, column1B
    join max-of(column2B) from table2
    where table2.column2A == table1.column1A     
{
    ...
}

Другим методом будет использование метода отображения на table1 в форме или отчете.

display ColumnB column2B()
{    
    return (select max-of(column2B) from table2
                where table2.column2A == this.column1A).column2A;
}

Производительность уступает первому решению, но может быть приемлемой.

2 голосов
/ 31 августа 2011

Как уже упоминалось в предыдущем ответе, группировка - это наиболее близкая к определенной функции функция. Если по какой-то причине вам нужен более простой запрос или если вам необходимо использовать таблицу или объект запроса для использования в качестве источника данных в форме или отчете, вы можете развить идею создания представления в AOT, которое содержит группирование. Затем вы можете использовать это представление, чтобы легко присоединиться к объекту запроса или к источнику данных формы и т. Д. *

1 голос
/ 04 сентября 2011

Ax2012 имеет поддержку вычисляемых столбцов в представлениях, вы можете использовать класс SysComputedColumn для построения нужного запроса

...