1個

2015-07-22 23 views
1

突然想到的因素確定增加ID列說,我有一個像這樣的列:1個

ID 
1 
2 
4 
5 
6 
11 
12 
15 
16 
18 
19 
20 
25 
31 

我希望能夠查詢僅列,其中由1且僅當它出現有ID變在行X次(X是要改變的是需要能夠可變) 因此從上面的表格我的SQL應該返回此:

ID 
4 
5 
6 
18 
19 
20 

只增加1,併發生了ID`s連續3次。 我正在使用Oracle 11g

感謝

回答

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

+0

X應該是我可以作爲變量發送到查詢中的東西。 – Avoral

+0

好的,我編輯了我的文章,但我想你必須做一些研究和改變才能爲你工作,因爲我現在不能測試它。但我告訴你一個可能的解決方法。也許有人會在以後發佈更好的解決方案...... – kl78