假设我有一个这样的专栏:
ID
1
2
4
5
6
11
12
15
16
18
19
20
25
31
我希望只能查询ID增加1的那些列,并且只有在行中出现X次时才会查询(X是需要能够更改的变量) 所以从上面的列我的SQL应该返回:
ID
4
5
6
18
19
20
只有ID增加1并且连续发生3次。 我正在使用ORACLE 11g
由于
答案 0 :(得分:1)
嗯,尝试这样的事情:
Select t1.id, t2.id, t3.id from table as t1
inner join table as t2 on t1.id = (t2.id + 1)
inner join table as t3 on t2.id = (t3.id + 1)
X将是连接数
对于依赖于x的动态sql查询,你可以构建类似这样的东西:
SET @SQLQuery1 = 'Select t0.id ';
SET @SQLQuery2 = '';
x=10;
while x > 0
begin
@SQLQuery1+=',t'+x+'.id';
@SQLQuery2+='inner join table as t'+x+' on t1.id = (t' + x + '.id + x)';
x= x-1;
end
@SQLQuery1 = @SQLQuery1+ 'from table as t0 ' + @SQLQuery2;
EXECUTE(@SQLQuery1);
现在无法测试,所以也许你必须修改它,直到它工作,我希望这适用于你的环境,我不使用oracle 11g