0

単純なものが欠けているかもしれませんが、AX でネストされたクエリを作成する方法はありますか? うまくいくと思われる構文をいくつか試しましたが、うまくいきませんでした。

次の標準 SQL ステートメントは、私がやろうとしていることを達成しますが、これは SQL ではなく AX で行う必要があります。

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

私の問題は、テーブル 1 がテーブル 2 と 1 対多の関係にあり、AX には私が認識している DISTINCT 関数がないため、JOIN ステートメントを使用すると、各レコードの多くのコピーを受け取ることです。

ありがとう

4

3 に答える 3

5

ネストされたクエリは、AX ではサポートされていません。

欠落している個別をバイパスする 1 つの方法は、group by を使用することです (column2B の最大値が興味深いと仮定します)。

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

table1もう 1 つの方法は、フォームまたはレポートで表示方法を使用することです。

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

パフォーマンスは最初のソリューションより劣りますが、許容できる場合があります。

于 2011-08-30T11:24:53.430 に答える
2

前の返信で述べたように、group-byは、個別の関数に到達できる最も近いものです。何らかの理由でより単純なクエリが必要な場合、またはフォームやレポートのデータソースとして使用するテーブルまたはクエリオブジェクトが必要な場合は、group-byを含むビューをAOTで作成するというアイデアを楽しむことができます。次に、そのビューを使用して、クエリオブジェクトやフォームデータソースなどに簡単に参加できます。

于 2011-08-31T04:56:56.427 に答える
1

Ax2012 は、ビューで計算された列をサポートしています。SysComputedColumn クラスを使用して、必要なクエリを作成できます。

于 2011-09-04T16:20:45.353 に答える