ax 2012 - 直接SQL查询备选方案

时间:2017-12-11 02:16:08

标签: sql-server reporting-services axapta dynamics-ax-2012-r3

我使用直接SQL查询作为我的SSRS报告的数据源:

SELECT 
    emp.EmployeeNumber, FirstName, LastName, MiddleName
    , amts.AmountCode, amts.amt, amts.AmountType
from EmployeeMaster emp
LEFT OUTER JOIN 
(
    SELECT 'Earning' as AmountType, EmployeeNumber, EarningCode as AmountCode
            , SUM(Amount) AS amt 
            FROM EmployeeEarnings GROUP BY EmployeeNumber, EarningCode
    UNION ALL
    SELECT 'Deduction', EmployeeID, DeductionID
            , SUM(Amount) AS amt FROM EmployeeDeduction GROUP BY EmployeeID, DeductionId
) AS amts
ON emp.EmployeeNumber = amts.EmployeeNumber

此查询收集按员工编号,收入类型和扣除类型分组的每位员工的所有收入和扣除额。我不确定我是否可以在x ++或AOT查询中执行此操作。我想知道这样做是否可以,或者是否有替代方法可以产生像此查询一样的结果?我正在使用RDP类。

2 个答案:

答案 0 :(得分:3)

AX不支持嵌套连接。 但是,您可以创建EmployeeEarningsEmployeeDeduction的联合视图。 然后,您可以选择EmployeeMaster和外部联接以获得相同的结果。

您的SQL不正确,因为它不考虑dataAreaIdPartition

答案 1 :(得分:0)

是,AX不支持嵌套连接。是的,你可以看一看。您可以使用ResultSet类通过sqlStatement通过直接SQL查询获取SQLconnection的结果。

前段时间我创建了一个包装类https://github.com/mazzy-ax/SysResultSet。仅对俄语的评论。抱歉。项目导入ax2012 https://github.com/mazzy-ax/SysResultSet/blob/ax2012/AOT/Classes/Class_SysResultSet.xpo

它简化了使用直接SQL查询的工作。如果你知道自己在做什么,试试吧。

而且,是的,您的SQL不正确,因为它不考虑dataAreaIdPartition。另外,您的SQL查询忽略Axapta XDS(记录级别安全性)和Axapta安全子系统。我认为AOT查询更充足。