我有两张表:“发票”为I
和“应收帐款”为AR
。SQL表连接问题
AR
表包括发票(ID为0)和收到的现金(ID为4),而I
表包括发票金额栏和调整栏。
除了定期的发票和调整之外,还有一些情况是在AR
表中对发票进行了调整并且净影响为0.00。另外有时,发票在发票前创建并在发票表中注销,因此AR
将在AR
中有0.00金额,但I
表中有100美元的金额和 - 100美元的调整。
我正在尝试创建一个查询,它使我可以并排发送发票和现金,还可以创建一个新列,其中包含针对AR
中0.00余额的发票进行的调整。可能有帮助的列:
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
任何想法如何实现这一目标?我能得到这个之后,从AR
表
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
匹配I
和AR
表以及现金和AR
,我怎么能包括为谁调整作了但由于调整等于发票金额没有AR
的发票。
答:
以下的答案为我工作。基本上我想包括发票表中的所有调整,包括那些不在AR表中填充的调整,因为调整是为了清除与最终发票有问题后完成的工作相关的客户余额。我用下面的查询
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
牢记子查询的第一部分DISTINCT子句中删除任何重复,以及它们求和,所以它看起来像与特定发票号码一个总结。子查询的第一部分根据发票问题和与客户相关的调整进行汇总。第二部分是匹配收到的所有付款。我希望这有帮助。
感谢弥敦道,我试过了,但没有奏效。所以我拿了结果并创建了一个新表,比我跑第二个查询并加入了结果。有效。感谢您的支持。 – Invisible