【发布时间】:2017-02-07 20:00:19
【问题描述】:
我有两个表格:I 的“invoice”和AR 的“Accounts Receivable”。
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
知道如何实现吗?我能够匹配I 和AR 表和现金以及AR 来自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
获得此信息后,我如何包含已对其进行调整但没有 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 子句会删除所有重复项并将它们相加,因此它看起来像是与特定发票编号相关的摘要。子查询的第一部分是根据发票问题和与客户相关的调整进行总结。第二部分是匹配收到的所有付款。我希望,这会有所帮助。
【问题讨论】:
标签: sql sql-server join