gpt4 book ai didi

sql - 如何在 SQL Server 查询中重置 sum() over ()?

转载 作者:行者123 更新时间:2023-12-04 10:52:28 24 4
gpt4 key购买 nike

我有一个看起来像这个例子的派生表:

{从 tb_data 中选择 *}

tb_data.

我希望结果有额外的求和列,问题是如果信息列值 = 'reset',我需要求和列来重置工作值

{select *, (我假设 sum(number) over (partition by id order by date desc)) 作为来自 tb_data 的总和}

输出应该是这样的:

desired output

实际派生表包含数千个 id,这就是为什么它需要按 id 分区并按日期 desc 排序,并且每个都有不同数量的重置点。

什么 SQL 查询会得到我需要的输出?

最佳答案

您可以先进行条件窗口总和来定义组:每次找到重置时,都会启动一个新组。然后你可以简单地做 numbers 的窗口总和组内。

select 
id,
date,
info,
number,
sum(number) over(partition by id, grp order by date) summation
from (
select
t.*,
sum(case when info = 'reset' then 1 else 0 end)
over(partition by id order by date) grp
from mytable t
) t

关于sql - 如何在 SQL Server 查询中重置 sum() over ()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59416838/

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