2011-08-29 59 views
0

也許我錯過了簡單的東西,但有沒有辦法在AX中編寫嵌套查詢?我嘗試了一些我認爲會起作用的語法,但沒有運氣。Dynamics 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 

我的問題是,表1與表2一個一對多的關係,因爲AX不具有獨特的功能,我所知道的,我收到使用時,每個記錄的許多副本JOIN語句。

謝謝

+0

你不在top1選擇上指定一個排序,這意味着你從table2中得到columb2B的任意值。 –

回答

5

AX不支持嵌套查詢。繞過失蹤不同

一種方式是通過(假設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

正如在前面的回覆中提到的,group-by是最接近獨特功能的。如果您出於某種原因需要更簡單的查詢,或者需要將表或查詢對象用作表單或報表上的數據源,則可能會在AOT中創建一個包含group-by的視圖。然後,您可以使用該視圖輕鬆地加入到查詢對象或數據源的形式等因素對...