gpt4 book ai didi

SQL如何在满足阈值/条件之前对同一列的值求和?

转载 作者:行者123 更新时间:2023-12-04 23:47:16 24 4
gpt4 key购买 nike

编辑 - 我正在使用 MSSQL Server 2005 - SP4 (9.0.5000)

我在一个表中有 3 列 - 客户 ID、订单号、付款日期和付款。当用户付款时,它会使用客户 ID 记录数据,增加订单号(因此第一次付款是 1,第二次付款是 2,等等),并有日期和付款金额。

我只想查询所有的第一笔付款,直到总付款金额达到阈值/条件100。

首先,我尝试只使用 sum() 来查看是否有什么东西会神奇地突然出现在我的脑海中——但总和是我所知道的唯一方法:

select CustomerID, Order, sum(Payment) as FirstFullPayment
from #temp
group by CustomerID

然后我尝试制作 2 个不同的临时表 - #up 表示未完成的付款,#fp 表示已完成的付款。我的想法是,我可以将已确认的 >100 笔付款放入#fp,并将已确认的未完成付款放入#up,如下所示:

select * into #fp
from #temp
where Order = 1 and Payment >= 100

select * into #up
from #temp
where Order = 1 and Payment < 100

然后我可以依次加入 #up 和 #temp,其中 Order = 2、3、4 等,在 #up 中添加付款,直到它们 >= 100,然后将它们插入 #fp

唯一的是我知道这是一个非常糟糕和迂回的方法,必须有更好更简单的方法来做到这一点!提前致谢!

最佳答案

您可以使用运行总和并根据您的条件选择行:<=100

select top 1 * from 
(
select CustomerID,
(
SELECT SUM(b.payment)
FROM #temp b
WHERE a.customerid=b.customerID and b.[order] <= a.[order]) as FirstFullPayment
from #temp a
--where customerid=yourCustomerId
)runningsums
where runningsums.FirstFullPayment<=100
order by runningsums.FirstFullPayment desc

关于SQL如何在满足阈值/条件之前对同一列的值求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37865508/

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