复杂的 AX 查询

Complex AX Query

我想将此 SQL 查询重建为 AX 查询。

试了好几种方法,还是不明白。

我对 AX 查询并不完全陌生,但我只对一些简单的查询有经验,对如此复杂的 SQL 查询没有经验。

SELECT * FROM (  SELECT DH.[RECID]                          AS RECID_DIMENSIONHIERARCHY
                      ,DH.[NAME]                            AS NAME__DIMENSIONHIERARCHY
                      ,DH.[DESCRIPTION]                     AS DESC__DIMENSIONHIERARCHY
                      ,DH.[PARTITION]                       AS PARTITION_DIMENSIONHIERARCHY
                      ,DL.[DIMENSIONATTRIBUTE]              AS RECID_DIMENSIONATTRIBUTE
                      ,DA.[NAME]                            AS NAME_DIMENSIONATTRIBUTE        
                      ,DN.[RECID]                           AS RECID_DIMENSIONCONSTRAINTNODE
                      ,DNC.[RECID]                          AS RECID_DIMENSIONCONSTRAINTNODECRITERIA 
                      ,DNC.[RANGETO]                        AS #Owner
                      ,DNCR.[WILDCARDSTRING]                AS #Agreement                                             
             FROM (SELECT * FROM [dbo].[DIMENSIONHIERARCHY]     
                          WHERE [STRUCTURETYPE] = 1 AND [NAME] LIKE 'AG-OW%'  
                  )                                                                          AS DH  
      INNER JOIN [dbo].[DIMENSIONHIERARCHYLEVEL] AS DL
                    ON DH.[RECID]       = DL.[DIMENSIONHIERARCHY]
                AND DH.[PARTITION]      = DL.[PARTITION]     
      INNER JOIN [dbo].[DIMENSIONATTRIBUTE] AS DA
                    ON DL.[DIMENSIONATTRIBUTE]        = DA.[RECID]
                AND DL.[PARTITION]                          = DA.[PARTITION]     
      INNER JOIN [dbo].[DIMENSIONCONSTRAINTNODE] AS DN
                    ON DL.[RECID]                           = DN.[DIMENSIONHIERARCHYLEVEL]
                AND DL.[PARTITION]                          = DN.[PARTITION]   
      INNER JOIN [dbo].[DIMENSIONCONSTRAINTNODECRITERIA]           AS DNC
                    ON DN.[RECID]                           = DNC.[DIMENSIONCONSTRAINTNODE]
                AND DN.[PARTITION]                          = DNC.[PARTITION]   
      INNER JOIN [dbo].[DIMENSIONCONSTRAINTNODECRITERIA] AS DNCR
                    ON DN.[PARENTCONSTRAINTNODE]            = DNCR.[DIMENSIONCONSTRAINTNODE]
                AND DN.[PARTITION]                          = DNCR.[PARTITION]                        
                ) AS Sub

您需要分解您的查询并将其分成小块来实现。然后将所有这些组合起来以获得所需的结果。

在 X++ 中有两种创建查询的方法。

  1. 使用 select 语句创建查询,例如:

    Select * from HcmWorker join * from DirPerson where DirPerson.RecId == HcmWorker.Person

    看到这个link:Select statement syntax

  2. 创建具有 AOT 结构的查询。您可能想看看以下 link:

    Create query in AOT by using X++