我有一个数据集,其中一个ID有12个不同的值,还有起始值和结束值。我想初始化的是把开始值作为循环的开始参数,结束值作为最后一个参数。根据它们搜索谷值,并找到第一个连续增加的值。
下面我发布了一个示例数据集:
create table #sample_data(
ID VARCHAR(10), val1 INT, val2 INT, val3 INT, val4 INT, val5 INT, val6 INT, val7 INT, val8 INT, val9 INT, val10 INT, val11 INT, val12 INT, startValue INT, endValue INT
);
insert into #sample_data values
(1001,3,2,1,0,1,2,3,0,0,0,0,0,1,7),
(1002,1,2,3,4,0,0,0,1,2,3,0,0,1,12),
(1003,0,3,2,1,0,0,0,0,0,0,0,0,1,12),
(1004,0,1,2,3,4,0,0,0,0,0,0,0,3,9),
(1005,1,1,1,1,2,3,2,2,1,1,0,0,1,8);
这就是我期望的结果:对于ID = 1001,我的startValue是1,end是7,算法将通过从val1到val7来比较每个val与下一个val,并计数递增,直到它结束。在这种情况下,对于1001,它将是0,因为系列将以递减开始。对于ID 1002,它也将是3(从val1到val4,当出现递减时,它将在val5处停止)对于ID 1003,它将是1,因为ID 1004的开头只有一个递增。对于ID 1005,它将是2,因为它从3开始,在val9结束。对于ID 1005,它将是2,这是从val4到val6的递增
我曾尝试使用写游标来执行此操作,但由于我有超过300K行的数据,因此需要数小时才能执行。如果你有任何更好的建议(不使用光标),我将非常感谢。
https://stackoverflow.com/questions/56390789
复制相似问题