Q

Finding a sequential block of numbers

My brain is working and working but i still haven't found a solution for the following problem:

I'm working with SQL Server 2000 DB. OK, let's say I have a table with a unique integer column named Product_ID containing the following values, each one in its seperate row:
1, 3, 5, 6, 7, 8, 10, 13, 20, 21
Now I want to make a query saying for example: "Give me a sequential block of 4 numbers". That means for the above listed example data, the rows containing: 5, 6, 7, 8. Is there any solution to achive this with an SQL statement?

First, let's build our example table and populate it:

create table Products
( ProductID numeric(5) primary key
);

insert into Products values (1);
insert into Products values (3);
insert into Products values (5); 
insert into Products values (6); 
insert into Products values (7); 
insert into Products values (8); 
insert into Products values (10); 
insert into Products values (13); 
insert into Products values (20); 
insert into Products values (21);
Next, we need to define what we are looking for in terms that are easily translated into SQL. In a sentence, we are looking for two ProductIDs, one which will be three more than the other (because we know that for any four consecutive numbers, the difference between the first and last will be three), that have, including themselves, four rows between them. Here's the SQL:
select cast(BeginProd.ProductID as varchar) + ' through ' + 
         cast(EndProd.ProductID as varchar) "Prod Seq of 4" 
  from Products BeginProd, Products EndProd
  where EndProd.ProductID - BeginProd.ProductID = 3
    and ( select count(*) from Products
            where ProductID between BeginProd.ProductID 
                            and EndProd.ProductID ) = 4;
And here is the result, which is what we expected:
Prod Seq of 4
-------------
5 through 8

For More Information

  • What do you think about this answer? E-mail the edtiors at editor@searchDatabase.com with your feedback.
  • The Best SQL Web Links: tips, tutorials, scripts, and more.
  • Have an SQL tip to offer your fellow DBAs and developers? The best tips submitted will receive a cool prize. Submit your tip today!
  • Ask your technical SQL questions -- or help out your peers by answering them -- in our live discussion forums.
  • Ask the Experts yourself: Our SQL, database design, Oracle, SQL Server, DB2, metadata, object-oriented and data warehousing gurus are waiting to answer your toughest questions.

This was first published in April 2002

Dig deeper on Oracle and SQL

Pro+

Features

Enjoy the benefits of Pro+ membership, learn more and join.

Have a question for an expert?

Please add a title for your question

Get answers from a TechTarget expert on whatever's puzzling you.

You will be able to add details on the next page.

0 comments

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

SearchDataManagement

SearchBusinessAnalytics

SearchSAP

SearchSQLServer

TheServerSide

SearchDataCenter

SearchContentManagement

SearchFinancialApplications

Close