gpt4 book ai didi

SQL 查询比较和求和

转载 作者:行者123 更新时间:2023-12-01 09:56:29 24 4
gpt4 key购买 nike

我有这些问题,我需要匹配列的总和,看看它们是否与发票编号的发票最终总计匹配(我正在查询中执行此操作)示例

Invoice No      Line _no      Total Line  Invoice total   Field I will create
----------------------------------------------------------------------
45 1 145 300 145
45 2 165 300 300 Match

46 1 200 200 200 Match

47 1 100 300 100
47 2 100 300 200
47 3 100 300 300 Match

最佳答案

你想要一个累计和。在 SQL Server 2012+ 中,只需执行以下操作:

select e.*,
(case when InvoiceTotal = sum(InvoiceTotal) over (partition by invoice_no order by line_no)
then 'Match'
end)
from example e;

在早期版本的 SQL Server 中,我倾向于使用相关子查询来完成:

select e.*
(case when InvoiceTotal = (select sum(InvoiceTotal)
from example e2
where e2.Invoice_no = e.invoice_no and
e2.line_no >= e.line_no
)
then 'Match'
end)
from example e;

您也可以按照 M Ali 的建议使用交叉应用来完成此操作。

编辑:

既然我想到了这个问题,您不需要累加和。这正是我最初想到这个问题的方式。因此,这将适用于 SQL Server 2008:

select e.*,
(case when InvoiceTotal = sum(InvoiceTotal) over (partition by invoice_no)
then 'Match'
end)
from example e;

如果不进行更多操作,您将无法获得累积和(倒数第二列),但是 match 列并不难。

关于SQL 查询比较和求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25730267/

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