2016-03-28 11 views
1

bin eine Abfrage, die eingehenden Zahlungsdetails, die Zahlungsmittel, Details der Zahlungsmittel, und dann einige UDFS von den verwandten Ausgangsrechnungen, zusätzlich enthalten zu einigen UDF von einem Objekt, die sich auf eine UDF in der AR-Rechnung beziehen, jetzt jedes Mal, wenn meine Abfrage ausgeführt wird, zeigt es kein Ergebnis. Bin mir sicher, dass hier etwas fehlt oder falsch ist, aber bisher konnte ich es nicht finden. wenn jemand mir helfen kann mit diesem werde ich hier dankbar sein, ist die Abfrage:SBO-Tabellen-Beziehung (AR INVOICE-INCOMING Zahlung)

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

Es ist wirklich schwierig zu beantworten wir wissen nicht, wie die Daten sind ... können Sie versuchen, Outer Joins verwenden können innere Joins sind die Daten filtern auch überprüfen Sie die Primärschlüssel und Fremdschlüssel Beziehungen – Siva

+0

sind Sie sicher, dass die Tabelle 'RCT2' die Spalte' BaseAbs hat '? –

+0

@JustDoIt, nun, ich hatte die Abfrage-Beziehungen aktualisieren und Felder verwendet, nachdem ich mehr Verständnis für die Tabellen Beziehungen hatte, und es funktioniert jetzt, thx –

Antwort

0

Ich denke, es gibt ein paar Probleme mit der Abfrage ist, mit dem von ORCT zu RCT2 verbinden beginnen.

Ich habe ähnliche Abfragen in der Vergangenheit erstellt, hier ist eine, die ich weiß funktioniert, vielleicht können Sie es verwenden, um Ihre anzupassen. Zum einen müssen Sie viele dieser inneren Joins definitiv an Outer Joins anpassen, da viele der Beziehungen zwischen Payments und den übergeordneten Geschäftsobjekten (wie Rechnungen) sehr locker sind und nicht immer zutreffen.

Beachten Sie, dass die folgende Abfrage speziell nach Rechnungen in der RCT2-Tabelle sucht (dies ist der "Zeilen" -Abschnitt des Objekts "Eingehende Zahlung"), daher die Bedingung 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

die Abfrage jetzt ist jetzt gut funktioniert, war das Problem in innere Verknüpfung, sollte es, verbinden sie nach links ersetzt hier ist die eine feste:

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