Solved

MSSQL get max number in range for multiple ranges

Posted on 2011-02-17
5
685 Views
Last Modified: 2012-05-11
I have a list of non-continuous numbers in a column on table 1, on table 2 of categories that show number sequences.

example
table 2
1 returns 1xxxx
2 lost  2xxxx
3 found 25xxx

table 1
14008
15001
25003

I want to find out the next number for each group.

Long way:
select * from table 2 as a
left join (select '1' as id, max(number)+ 1 as next_number from table 2 where number > 10000 and number < 20000) as b on a.id = b.id
left join (select '2' as id, max(number)+ 1 as next_number from table 2 where number > 20000 and number < 25000) as c on a.id = c.id

What is a better way of doing this?
0
Comment
Question by:freshgrill
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
5 Comments
 
LVL 32

Expert Comment

by:Ephraim Wangoya
ID: 34921014

select id, max(number) + 1
from table2
group by id
0
 

Author Comment

by:freshgrill
ID: 34921051
@ewangoya: Table 1 just shows the number sequence, ie. any number starting with 1..... is returns, basically 10000-20000.
0
 
LVL 32

Expert Comment

by:Ephraim Wangoya
ID: 34921233

Use
with CTE (ID, Numbers)
as
(
    select 
       case 
          when number > 10000 and number < 20000 then
             1
          when number > 20000 and number < 25000 then
              2
          else
              3
        end as ID,
        number as Numbers
)
select ID, Max(Numbers) +1
from CTE
group by ID

Open in new window

0
 
LVL 32

Expert Comment

by:Ephraim Wangoya
ID: 34921243
Oops I missed the table
with CTE (ID, Numbers)
as
(
    select 
       case 
          when number > 10000 and number < 20000 then
             1
          when number > 20000 and number < 25000 then
              2
          else
              3
        end as ID,
        number as Numbers
      from Table2  
)
select ID, Max(Numbers) +1
from CTE
group by ID

Open in new window

0
 
LVL 32

Accepted Solution

by:
Ephraim Wangoya earned 500 total points
ID: 34921252
Sorry, its from Table1

with CTE (ID, Numbers)
as
(
    select
       case
          when number > 10000 and number < 20000 then
             1
          when number > 20000 and number < 25000 then
              2
          else
              3
        end as ID,
        number as Numbers
      from Table1  
)
select ID, Max(Numbers) +1
from CTE
group by ID
0

Featured Post

Database Solutions Engineer FAQs

In this series, we will discuss common questions received as a database Solutions Engineer at Percona. In this role, we speak with a wide array of MySQL and MongoDB users responsible for both extremely large and complex environments to smaller single-server environments.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Use this article to create a batch file to backup a Microsoft SQL Server database to a Windows folder.  The folder can be on the local hard drive or on a network share.  This batch file will query the SQL server to get the current date & time and wi…
It is possible to export the data of a SQL Table in SSMS and generate INSERT statements. It's neatly tucked away in the generate scripts option of a database.
Monitoring a network: why having a policy is the best policy? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the enormous benefits of having a policy-based approach when monitoring medium and large networks. Software utilized in this v…
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.

626 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question