Ich habe eine zwei Tabellen: "Rechnung" als I
und "Debitoren" als AR
.SQL Tabelle Beitritt Ausgabe
AR
Tabelle enthält Rechnung ausgestellt (mit ID 0) und Bargeld erhalten (mit ID 4), während I
Tabelle Rechnungsbetrag Spalte und Anpassung Spalte enthält.
Abgesehen von regelmäßigen Rechnungen und Anpassungen gibt es Fälle, in denen Anpassungen an der Rechnung vorgenommen wurden und der Nettoeffekt 0,00 in der Tabelle AR
beträgt. Außerdem werden Rechnungen manchmal vor dem Buchen in der Rechnungstabelle erstellt und abgeschrieben, so dass AR
einen Betrag von 0,00 in AR
hat, aber I
Tabelle einen Betrag von 100 US-Dollar und - 100 US-Dollar in Anpassung hat.
Ich versuche, eine Abfrage zu erstellen, wo es mir ausgegebene Rechnung und Bargeld erhalten nebeneinander und erstellen Sie auch eine neue Spalte, die Anpassung für Rechnungen mit 0,00 Balance in AR
enthält. Spalten, die helfen könnten:
AR.ID = unique ID
AR.ARinvnumber= Invoice number from Invoice table
Ar.Type= 0=invoice, 1 = payment received
Ar.Amount= ARamount saved from invoice
I.Id= unique ID
Invoice number = number of invoice
Invamount= Actual invoice amount
Inv Adjustment= Adjustment applied on invoice
Irgendeine Idee, wie ich das erreichen kann? Ich bin in der Lage I
und AR
Tisch und Bargeld und AR
aus AR
Tabelle dieses
Select *
From (select ar.customerId, ar.customername,ar.invnumber ar.amount, i.invamout, i.invadjustment from Ar join I on ar.arinvnumber=i.invoicenumber where ar.artype=1) inv
join
select (select ar.customerId, ar.customername, ar.invnumber ar.amount, i.invamout, i.invadjustment from Ar join I on ar.arinvnumber=i.invoicenumber where ar.artype=1) cash
on inv.invnumber=cash.invnumber and inv.customerid=cash.customerid
nach dem Aufstehen passen, wie kann ich schließe jene Rechnungen, für die Anpassung vorgenommen wurde, aber es gab keine AR
weil Anpassung Rechnungsbetrag entspricht.
Antwort:
Die folgende Antwort funktionierte für mich. Grundsätzlich wollte ich alle Anpassungen aus der Rechnungstabelle einbeziehen, einschließlich derjenigen, die nicht in der AR-Tabelle enthalten sind, da die Anpassungen vorgenommen wurden, um das Konto des Kunden in Bezug auf die Arbeit nach der letzten Rechnung freizugeben. Ich habe folgende Abfrage
Select *
From (select AR.ARInvnum as ARInvnum, AR.Arclientnumber as Aclient, sum(AR.Amount), I.Invoicenumber, sum(distinct(I.IAmount)), sum(I.IAdjust)
From AR.ARInvnum=I.Invoicenumber
Where ar.artype=0
Group by AR.ARInvnum, I.Invoicenumber, AR.Arclientnumber)AInvoice
Left join
(select AR.ARInvnum as PARInvnum, AR.Arclientnumber as PClient, sum(AR.Amount), I.Invoicenumber, sum (I.IAmount), sum(I.IAdjust)
From AR.ARInvnum=I.Invoicenumber
Where ar.artype=4
Group by AR.ARInvnum, I.Invoicenumber, AR.ARclientnumber)PInvoice
on
AInvoice.ARInvnum=PInvoice.PARInvnum
and
AInvoice.Aclient=PInvoice.PClient
Keep in Mind die Distinct Klausel im ersten Teil der Unterabfrage alle Duplikate entfernt sowie summieren sie, so dass es wie eine Zusammenfassung in Bezug auf bestimmte Rechnungsnummer suchen. Der erste Teil der Unterabfrage fasst die Rechnungsprobleme und die Anpassungen des Kunden zusammen. und der zweite Teil entspricht allen erhaltenen Zahlungen. Ich hoffe das hilft.
Danke Nathan, ich habe versucht, aber es hat nicht funktioniert. Also nahm ich das Ergebnis und erstellte eine neue Tabelle, als ich die zweite Abfrage ausführte und dem Ergebnis beitrat. Es funktionierte. Danke für Ihre Unterstützung. – Invisible