gpt4 book ai didi

sql - 在没有游标的情况下合并单个SQL表中的数据

转载 作者:行者123 更新时间:2023-12-03 13:21:02 24 4
gpt4 key购买 nike

我有一个带有ID列的表,另一个带有数字的列。一个ID可以有多个数字。例如

ID | Number
1 | 25
1 | 26
1 | 30
1 | 24
2 | 4
2 | 8
2 | 5


现在基于这些数据,在一个新表中,我想要这个

ID | Low | High 
1 | 24 | 26
1 | 30 | 30
2 | 4 | 5
2 | 8 | 8


如您所见,我想合并数字连续的任何数据,例如24、25、26。所以现在低点是24,高点是26,然后30仍然是一个单独的范围。我正在处理大量数据,因此我宁愿不使用游标来提高性能(这是我以前所做的,并且使事情放慢了很多时间)...实现此目的的最佳方法是什么?我不是SQL专业人士,所以我不确定是否有可用的功能可以使此操作变得更容易,或者最快的方法是什么。

谢谢您的帮助。

最佳答案

关键的观察结果是,一个数字序列减去另一个序列是一个常数。我们可以使用row_number生成另一个序列。这将标识所有组:

select id, MIN(number) as low, MAX(number) as high
from (select t.*,
(number - ROW_NUMBER() over (partition by id order by number) ) as groupnum
from t
) t
group by id, groupnum


剩下的只是聚合。

关于sql - 在没有游标的情况下合并单个SQL表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14125297/

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