Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services AX静态查询中的联合-内部联接和左联接导致错误_Reporting Services_Microsoft Dynamics_Ax - Fatal编程技术网

Reporting services AX静态查询中的联合-内部联接和左联接导致错误

Reporting services AX静态查询中的联合-内部联接和左联接导致错误,reporting-services,microsoft-dynamics,ax,Reporting Services,Microsoft Dynamics,Ax,我想在AX静态查询中生成这种T-SQL代码,这里的问题是,当我生成QueryType:Union而不是Join时,我得到一个错误,即不能使用外部联接,只有:存在联接和不存在联接,对此我能做些什么 SELECT CUS.CurCode AS Currency, PSL.val AS PayPercent, /* ... */ FROM CustTrans CUS INNER JOIN CustTable ACC ON CUS.Account

我想在AX静态查询中生成这种T-SQL代码,这里的问题是,当我生成QueryType:Union而不是Join时,我得到一个错误,即不能使用外部联接,只有:存在联接和不存在联接,对此我能做些什么

SELECT

CUS.CurCode     AS Currency,
PSL.val             AS PayPercent,
/* ... */

FROM CustTrans CUS
INNER JOIN  CustTable ACC           ON CUS.AccountNum       = ACC.AccountNum
LEFT  JOIN  Dimensions DIM          ON CUS.Dimension3_      = DIM.Num
LEFT  JOIN  ProjInvoiceJour PIJ     ON CUS.Voucher          = PIJ.LedgerVoucher

UNION ALL

SELECT
/* ... */
PMT.NumOfMonths         AS Months,
PMT.NumOfDays           AS Days,
PMT.PaymSched           AS PaymSched,
PSL.val                 AS PayPercent,

FROM ProjInvoiceOnAccTrans ONA
INNER JOIN  ProjTable PRO           ON ONA.ProjId               = PRO.ProjId
INNER JOIN  ProjInvoiceTable PRI    ON PRO.ProjInvoiceProjId    = PRI.ProjInvoiceProjId
LEFT  JOIN  PaymTerm PMT            ON PRI.Payment              = PMT.PaymTermId

首先为联合体的顶部创建一个查询。因此,只为SQL的这一部分创建一个查询:

SELECT

CUS.CurCode     AS Currency,
PSL.val             AS PayPercent,
/* ... */

FROM CustTrans CUS
INNER JOIN  CustTable ACC           ON CUS.AccountNum       = ACC.AccountNum
LEFT  JOIN  Dimensions DIM          ON CUS.Dimension3_      = DIM.Num
LEFT  JOIN  ProjInvoiceJour PIJ     ON CUS.Voucher          = PIJ.LedgerVoucher
SELECT
/* ... */
PMT.NumOfMonths         AS Months,
PMT.NumOfDays           AS Days,
PMT.PaymSched           AS PaymSched,
PSL.val                 AS PayPercent,

FROM ProjInvoiceOnAccTrans ONA
INNER JOIN  ProjTable PRO           ON ONA.ProjId               = PRO.ProjId
INNER JOIN  ProjInvoiceTable PRI    ON PRO.ProjInvoiceProjId    = PRI.ProjInvoiceProjId
LEFT  JOIN  PaymTerm PMT            ON PRI.Payment              = PMT.PaymTermId
接下来,为联合体的底部创建第二个查询。因此,只为SQL的这一部分创建一个查询:

SELECT

CUS.CurCode     AS Currency,
PSL.val             AS PayPercent,
/* ... */

FROM CustTrans CUS
INNER JOIN  CustTable ACC           ON CUS.AccountNum       = ACC.AccountNum
LEFT  JOIN  Dimensions DIM          ON CUS.Dimension3_      = DIM.Num
LEFT  JOIN  ProjInvoiceJour PIJ     ON CUS.Voucher          = PIJ.LedgerVoucher
SELECT
/* ... */
PMT.NumOfMonths         AS Months,
PMT.NumOfDays           AS Days,
PMT.PaymSched           AS PaymSched,
PSL.val                 AS PayPercent,

FROM ProjInvoiceOnAccTrans ONA
INNER JOIN  ProjTable PRO           ON ONA.ProjId               = PRO.ProjId
INNER JOIN  ProjInvoiceTable PRI    ON PRO.ProjInvoiceProjId    = PRI.ProjInvoiceProjId
LEFT  JOIN  PaymTerm PMT            ON PRI.Payment              = PMT.PaymTermId
现在为每个查询创建一个视图。以下是有关如何基于查询创建视图的文章的链接:。然后创建第三个查询来执行联合。联合查询将把您创建的两个视图作为其数据源,并将它们联合在一起

还请注意,从正在进行联合的两个视图返回的字段需要返回相同的字段。在您的示例中,对其执行联合的两个查询返回的字段不同。我假设在现实中它们返回相同的字段,但您只是在示例中遗漏了一些字段以节省空间。但我想我会提起它只是为了安全