求SQL语句实现输入表到指定输出表的转换
求助:SQL实现区间按步长拆分转换
嘿各位技术圈的朋友,我最近碰到个SQL数据转换的需求,卡壳了,想请大家帮忙出出主意!我需要把下面的输入表,按照指定规则转换成期望的输出表,恳请各位大佬支支招~
输入表结构及数据
| start_value | end_value | interval |
|---|---|---|
| 0 | 120 | 10 |
| 1 | 150 | 50 |
期望输出表结构及数据示例
简单来说就是把每个大区间按指定的interval拆分成连续的子区间,最后一个子区间如果不足步长就以原end_value收尾,示例如下:
| start_value | end_value | next_start_value |
|---|---|---|
| 0 | 10 | 0 |
| 10 | 20 | 10 |
| ... | ... | ... |
| 110 | 120 | 110 |
| 1 | 51 | 1 |
| 51 | 101 | 51 |
| 101 | 150 | 101 |
需求说明
- 每一行输入的
[start_value, end_value]区间,按interval步长拆分为多个子区间 - 子区间的起始值从原
start_value开始,每次累加interval,直到接近end_value - 最后一个子区间的结束值直接用原
end_value(如果end_value - 最后起始值 < interval) next_start_value字段等于当前子区间的start_value
有没有大佬能提供对应的SQL实现呀?不同数据库的写法都可以分享,比如MySQL、PostgreSQL、SQL Server这些,谢谢大家啦!
内容的提问来源于stack exchange,提问作者Eriko
相关产品推荐
相关产品推荐

