【发布时间】:2020-10-07 22:23:50
【问题描述】:
我有一张包含发票付款的表格,可以是部分付款,也可以是全部付款。我将此计算字段与发票的总金额进行比较。我在查询中有两次,一次在 Select 语句中,一次在 Where 子句中。即使我删除了一个,所以它只在 Where 或 Select 中,运行也需要一个多小时。如果我完全删除 SUM,则需要 10 秒才能运行。
有没有更好的方法来获得总和?我应该使用索引视图吗?临时表?请注意,发票编号仅对供应商是唯一的,通常不是唯一的。最初的 FROM 是一个视图,如果这有区别的话。
select distinct
transdate,
invoicedate,
PAY.OrderAccount,
v.VendorName,
invoiceamountmst,
(select sum(PAY1.settleamountcur) from [VIEW_INVOICE_PAYMENT] PAY1 where PAY.INVOICEID=PAY1.INVOICEID and PAY.OrderAccount=PAY1.OrderAccount) as "InvoiceSUM",
settleamountcur,
Currencycodeinvoice,
PAY.Description,
Voucher
from VIEW_INVOICE_PAYMENT PAY
inner join INVOICE on INVOICE_DOC_NO =invoiceid
JOIN VENDOR V on PAY.OrderAccount=v.VendorAccount
where TRANSDATE is not null
and (select sum(PAY1.settleamountcur) from [VIEW_INVOICE_PAYMENT] PAY1 where PAY.INVOICEID=PAY1.INVOICEID and PAY.OrderAccount=PAY1.OrderAccount)=total_cost_on_invoice
【问题讨论】: