2016-03-28 34 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