oracle - SQL: Concatenate sequential integer values -


i have column this:

id -------- 1 2 3 4 5 7 10 

and want following resultset:

id -------- 1-5 7 10 

is there way achieve (oracle) sql only?

yes:

select (case when min(id) < max(id)              cast(min(id) varchar2(255)) || '-' || cast(max(id) varchar2(255))              else cast(min(id) varchar2(255))         end) (select id, id - rownum grp       t       order id      ) t group grp order min(id); 

here sql fiddle demonstrating it.

the idea behind query subtracting rownum sequence of numbers results in constant. can use constant grouping.


Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -