নিম্নলিখিত সমাধান:
- পরীক্ষার তথ্য সরবরাহ করে;
- একটি অভ্যন্তরীণ কোয়েরি যা অন্যান্য ফাঁক তৈরি করে; এবং
- এটি এসকিউএল সার্ভার 2012 এ কাজ করে।
" সহ " ধারাটিতে ক্রমযুক্ত ক্রমগুলি চিহ্নিত করুন এবং তারপরে সারি সংখ্যার অভ্যন্তরীণ জোড়ায় ফলাফলটি দু'বার পুনরায় ব্যবহার করেছেন, তবে 1 দিয়ে অফসেট করুন যাতে সারিটির পরে সারিটির আগে তুলনা করতে, এর চেয়ে বেশি ফাঁক দিয়ে আইডি সন্ধান করুন 1. চেয়ে বেশি চেয়ে বেশি কিন্তু ব্যাপকভাবে প্রযোজ্য।
create table #ID ( id integer );
insert into #ID values (1),(2), (4),(5),(6),(7),(8), (12),(13),(14),(15);
with Source as (
select
row_number()over ( order by A.id ) as seq
,A.id as id
from #ID as A WITH(NOLOCK)
)
Select top 1 gap_start from (
Select
(J.id+1) as gap_start
,(K.id-1) as gap_end
from Source as J
inner join Source as K
on (J.seq+1) = K.seq
where (J.id - (K.id-1)) <> 0
) as G
অভ্যন্তরীণ কোয়েরি উত্পাদন করে:
gap_start gap_end
3 3
9 11
বাহ্যিক ক্যোয়ারী উত্পন্ন করে:
gap_start
3
LAG(id, 1, null)সহ ফাংশনটি ব্যবহার করতে পারেনOVER (ORDER BY id)।