2016-03-28 33 views
1

上面提供了一个查询,其中包含付款方式,付款方式的详细信息以及来自相关应收发票的一些UDFS的收款明细从与AR INVOICE中的UDF相关的对象到某些UDF,现在每次运行我的查询时都不会显示结果。 肯定有我在这里遗漏或不正确的东西,但到目前为止找不到它。 如果任何一个能帮助我有了这个,我将感谢 这里是查询:SBO表关系(AR INVOICE-INCOMING付款)

SELECT T1.[baseAbs] AS INVOICENO, T0.[DocDate],t0.[trsfrdate],t0.[trsfrref], T0.[CardName],T0.[Doctotal],T4.[VoucherNum] , 
T0.[Comments], T1.[DocNum] AS PAYMENTNO, T2.[Phone1], 
T0.[CashSum], T0.[CreditSum], T0.[CheckSum], T0.[TrsfrSum], 
T3.[DueDate] AS CHECKDATE, T3.[CheckNum] AS CHECKNO, T3.[Details] AS MAYBEBANKNAME 
, t5.[U_UnitCode],t5.[U_Type],t7.[WhsName],t7.[city] , 
t8.U_FloorNo 
FROM ORCT T0 
inner JOIN RCT2 T1 ON T0.[DocEntry] = T1.[DocNum] 
inner JOIN OINV T5 ON T5.[docnum] =T1.[BaseAbs] 
INNER JOIN RCT1 T3 ON T0.[DocNum] = T3.[DocNum] 
INNER JOIN RCT3 T4 ON T0.[DocNum] = T4.[DocNum] 
INNER JOIN OCRD T2 ON T0.[CardCode] = T2.[CardCode] 
INNER JOIN INV1 T6 ON T5.[DocEntry] = T6.[DocEntry] 
INNER JOIN OWHS T7 ON T6.[WhsCode] = T7.[WhsCode] 
INNER JOIN [dbo].[@AUND] T8 ON T5.[U_UnitCode] = T8.[Code] 
+0

这实在是很难作为回答我们不知道数据是如何的......可以尝试使用外部连接可能是内部连接正在过滤数据还检查主键和外键关系 – Siva

+0

您确定表'RCT2'有列'baseAbs '? –

+0

@JustDoIt,好吧,我已经更新了查询关系,并且在我对表关系有更多的理解之后使用了字段,现在它可以工作,thx –

回答

0

我觉得有几个问题进行查询,首先从ORCT联接到RCT2。

我已经在过去创建了类似的查询,下面是我知道的一个作品,也许你可以用它来调整你的。首先,您肯定需要将很多内部联接调整为外部联接,因为付款与其父业务对象(如发票)之间的很多关系非常松散,并且可能并不总是适用。

请注意,下面的查询专门查找RCT2表中的发票(这是“收款对象”的“行”部分),因此J002.InvType = 13条件。

SELECT * 
FROM [ORCT] J001 
LEFT OUTER JOIN [RCT2] J002 ON J002.DocNum = J001.DocNum AND J002.InvType = 13 
LEFT OUTER JOIN [OINV] J003 ON J003.DocEntry = J002.DocEntry 
LEFT OUTER JOIN [OACT] J004 ON J004.AcctCode = J001.CashAcct  
LEFT OUTER JOIN [RCT1] J005 ON J005.DocNum = J001.DocNum 
2

查询现在现在工作正常,问题是内部联接,它应该被替换左连接, 这里是固定的一个:

select T0.DocNum as 'Payment Number',T0.DocDate 'Payment Date',T0.CardCode, 
T0.CardName 'Customer Name',T1.BankCode 'Bankcode',T3.BankName 'Bank Name', T2.Phone1 , 
T0.CreditSum, 
T0.CashSum, 
T0.TrsfrSum, 
t0.CheckSum, 
t1.CheckNum as 'Check Number', 
t1.DueDate as 'check date', 
t6.VoucherNum as 'Voucher Number', 
t0.TrsfrRef as 'Transfer No', 
t0.TrsfrDate AS 'Transfer Date', 
ousr.USER_code as 'user code', 
T5.DocNum, t11.U_P_BuildingName as 'Building Name', 
CASE when T5.DocNum is null then 'On Account' else 'Paid For Invoice' END AS 'Payment Status', 
CASE when T5.DocStatus = 'O' then 'Open' else 'Closed' END AS ' Invoice Status', 
T4.SumApplied as 'Amount Paid on Invoice',T9.U_FloorNo,T5.U_UnitCode,T5.U_Type, 
t0.DocTotal as 'Payment Total',t5.DocTotal as'Invoice Total' , t8.City, 
t0.Comments as'Remarks' 
from ORCT T0 
left join rct1 T1 on T0.DocNum=T1.DocNum 
left join ocrd T2 on T2.CardCode=T0.CardCode 
left outer join ODSC T3 on T3.BankCode=T0.BankCode 
left join RCT2 T4 on T0.DocNum = T4.DocNum 
left join RCT3 T6 on T0.DocNum = T6.DocNum 
left join OINV T5 on T4.DocEntry = T5.DocEntry and T5.ObjType = T4.InvType 
left join oitm t11 on t5.u_unitcode = t11.ItemCode 
LEFT JOIN OWHS T8 ON T11.U_P_BuildingNum = T8.WhsCode 
LEFT JOIN [dbo].[@AUND] T9 ON T5.[U_UnitCode] = T9.[Code] 
INNER JOIN OSLP T10 ON T5.[SlpCode] = T10.[SlpCode] 
inner join ousr on ousr.USERID = t0.usersign 
where 
T4.InvType <> '14' and T0.[Canceled] = 'N' and t0.docnum=200001