【发布时间】:2013-07-04 06:23:38
【问题描述】:
我有一张包含不同发票的发票表。每张发票都有唯一的发票编号和金额值。发票有两种。一种是发票类型,另一种是结算类型。如果创建了发票,表中的条目将是发票类型,金额将为正数。如果用户支付了该发票,则会在表中输入另一个具有相同发票编号但金额为负数的条目,因为用户已支付该金额。
现在我想显示记录,如果存在任何两个具有相同发票编号的记录,然后显示计算金额总和的记录(这意味着添加发票类型记录和结算类型记录的金额)。而那些具有唯一发票编号(无结算记录)的记录应按原样显示(无金额)。
我猜查询会是这样的......,但这不是我想要的!
Select
InvoiceNumber, InvoiceTypeCode,
Amount = case when COUNT(InvoiceNumber) > 1
then SUM(Amount)
else Amount
end
from
Invoice
group by
InvoiceNumber, Amount, InvoiceTypeCode
【问题讨论】:
-
为什么不总是显示总和?如果没有两张发票,而只有一张发票,那将是完全相同的事情,但它会让您的事情变得更容易。毕竟,用已结算发票的负金额(复式记账?)抵消未结发票金额背后的想法难道不是您可以始终依靠汇总金额来获得正确的余额吗?
标签: sql sql-server