Reporting services AX静态查询中的联合-内部联接和左联接导致错误
我想在AX静态查询中生成这种T-SQL代码,这里的问题是,当我生成QueryType:Union而不是Join时,我得到一个错误,即不能使用外部联接,只有:存在联接和不存在联接,对此我能做些什么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
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
现在为每个查询创建一个视图。以下是有关如何基于查询创建视图的文章的链接:。然后创建第三个查询来执行联合。联合查询将把您创建的两个视图作为其数据源,并将它们联合在一起
还请注意,从正在进行联合的两个视图返回的字段需要返回相同的字段。在您的示例中,对其执行联合的两个查询返回的字段不同。我假设在现实中它们返回相同的字段,但您只是在示例中遗漏了一些字段以节省空间。但我想我会提起它只是为了安全