Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# MSSQL get max number in range for multiple ranges

Posted on 2011-02-17
Medium Priority
686 Views
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
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
• 4

LVL 32

Expert Comment

ID: 34921014

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

Author Comment

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

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
``````
0

LVL 32

Expert Comment

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
``````
0

LVL 32

Accepted Solution

Ephraim Wangoya earned 2000 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

Question has a verified solution.

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

How to leverage one TLS certificate to encrypt Microsoft SQL traffic and Remote Desktop Services, versus creating multiple tickets for the same server.
In this article we will get to know that how can we recover deleted data if it happens accidently. We really can recover deleted rows if we know the time when data is deleted by using the transaction log.
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as formâ€¦
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increasedâ€¦
###### Suggested Courses
Course of the Month6 days, 16 hours left to enroll