我有以下要求。
输入如下。
Create table Numbers
(
Num int
)
Insert into Numbers
values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15)
Create table FromTo
(
FromNum int
,ToNum int
)
Select * From FromTo
输出应如下所示。
FromNum ToNum
1 5
6 10
11 15
实际要求如下。
我需要将一列的数据加载到一个表中,该表将具有成千上万个具有不同编号的记录。 考虑如下。
1,2,5,7,9,11,15,34,56,78,98,123,453,765等。
我需要将它们加载到间隔为5000的FROM和TO列的其他表中。例如,在第一个5000中,如果我的数字一直到3000,则我的第一行应将FromNo设置为1,将ToNum设置为3000第二行:如果数据直到10000才有,而下一个no从12312开始(这是FromNum的第二行),则ToNum值应为+5000,即17312。在这里,如果没有no的数据直到17312需要考虑12312和17312之间的ToNum
输出应如下所示。
FromNum ToNum
1 3205
1095806 1100805
1100808 1105806
1105822 1110820
你们能帮我解决上述问题吗?
谢谢。
答案 0 :(得分:1)
在这种情况下,您可以尝试对数据进行分组并获得预期的结果:
DECLARE @interval int = 5
INSERT INTO FromTo (FromNum, ToNum)
SELECT MIN(Num) AS FromNum, MAX(Num) AS ToNum
FROM Numbers
GROUP BY (Num - 1) / @interval