如果记录存在相似的唯一键,则显示Sum else Show Record值

soh*_*iby 0 sql sql-server

我有一张发票表和不同的发票.每个发票都有一个唯一的发票编号和金额值.发票有两种类型.一个是Invoice Type,另一个是Settled类型.如果创建了发票,则表中的条目将为发票类型,金额将为正数.如果用户支付了该发票,则表中将输入具有相同发票编号的另一个条目,但由于用户已支付该金额,因此输入的金额为负数.

现在我想显示记录是否存在任何两个具有相同发票号的记录,然后显示记录并计算金额总和(这意味着添加发票金额类型记录和结算类型记录).那些具有唯一发票号(没有结算记录)的记录应该按原样显示(不加总和).

我猜这个查询会是一些什么......但是这不是我想要的!

Select 
    InvoiceNumber, InvoiceTypeCode, 
    Amount = case when COUNT(InvoiceNumber) > 1
                   then SUM(Amount)
                   else Amount
             end
from 
    Invoice
group by 
    InvoiceNumber, Amount, InvoiceTypeCode
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 5

您不需要在两种情况之间进行区分,如果您有一条记录,则总和与该值相同.

您不应对金额和类型代码进行分组,然后具有相同发票编号的两个记录将位于不同的组中.

select
  InvoiceNumber, Amount = sum(Amount)
from
  Invoice
group by
  InvoiceNumber
Run Code Online (Sandbox Code Playgroud)