我正在尝试使用Query
/ QueryRun
/等在Axapta / X ++中编写以下SQL查询的等效内容。系统:
SELECT FieldA,
(SELECT SUM(FieldB) FROM TableB X WHERE X.FieldA = TableA.FieldA),
(SELECT SUM(FieldB) FROM TableB Y WHERE Y.FieldA = TableA.FieldA),
(SELECT SUM(FieldB) FROM TableB Z WHERE Z.FieldA = TableA.FieldA)
FROM TableA
但是,据我所知,Axapta不支持subselect字段,所以我不能直接写它。
除了直接使用数据库之外,是否有一些鲜为人知的功能或巧妙的方式来编写此查询?
(我不想迭代TableA
并单独运行子查询,因为这就是我的报告现在的工作方式,而且速度太慢了。)
感谢。
答案 0 :(得分:0)
在这种情况下,我会在TableA上use the display method modifier。 下面是一些伪代码,用作TableA缓冲区方法。
display Amount getX()
{
TableB tableB;
;
select sum(FieldB) from tableB where tableB.FieldA == this.FieldA)
return tableB.FieldB;
}
可以想象,这种方法比SQL方法更昂贵,因此有些datasource caching(scroll to bottom)可以提供帮助 此外,在显示方法上不能进行排序或过滤。