也许我错过了一些简单的东西,但是有没有一种方法可以在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没有我所知道的独特功能,所以在使用JOIN语句时,我会收到每条记录的许多副本。
谢谢
发布于 2011-08-30 19:24:53
AX中不支持嵌套查询。
绕过缺少的distinct的一种方法是使用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;
}性能不如第一个解决方案,但它可能是可以接受的。
发布于 2011-08-31 12:56:56
正如在前面的回复中所提到的,group-by是最接近不同函数的方法。如果出于某种原因需要更简单的查询,或者需要将表或查询对象用作窗体或报表上的数据源,则可以考虑在包含group-by的AOT中创建视图。然后,您可以使用该视图轻松地连接到查询对象或表单数据源等。
发布于 2011-09-05 00:20:45
Ax2012在视图中支持computed columns,您可以使用SysComputedColumn类构建所需的查询
https://stackoverflow.com/questions/7237239
复制相似问题