gpt4 book ai didi

tsql - 选择0以连接多行

转载 作者:行者123 更新时间:2023-12-01 19:48:19 27 4
gpt4 key购买 nike

我有一个invoicespayments表。

对于每个invoice记录(包含OriginalInvoiceValue字段),付款表中可能有多个付款相关联。在将两个表连接在一起的select中,每个invoice记录当然都会在关联的payment记录的每次出现时重复进行。

我想要的是让OriginalInvoiceValue字段每个invoice仅返回一次,然后让它在关联的0记录的每一次额外出现时返回NULL(或payment)。 (例如,如果我将数据导出到excel并对OriginalInvoiceValue列求和,则实际上是获得所有发票的实际总数,而不是将其乘以每次出现的其他款项)。

在T-SQL中这可能吗?

最佳答案

如果是Sql Server 2005或更高版本,则可以将行号分配给发票的各个付款,并保留对发票的联接,选择仅用于首次付款的实际发票记录。在row_number()部分按您的要求下订单;我选择了PaymentID,但是付款日期可能更合适。

; with p as (
select *,
row_number() over (partition by InvoiceID
order by PaymentID) rn
from payments
)
select *
from p
left join invoices i
on p.InvoiceID = i.InvoiceID
and p.rn = 1
order by p.InvoiceID, rn

And here is SQL FIDDLE with example

关于tsql - 选择0以连接多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11411794/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com