Я думаю, что в ответе fa06 отсутствует необходимая группа
select
max(case when (pagenumber-1)/10 = 0 then pagenumber end) as "1-10",
max(case when (pagenumber-1)/10 = 1 then pagenumber end) as "11-20",
max(case when (pagenumber-1)/10 = 2 then pagenumber end) as "21-30"
from t
group by (pagenumber%10)
order by 1
Я сделал разбивку математически, но вы также можете сделать что-то вроде:
select
max(case when pagenumber between 1 and 10 then pagenumber end) as "1-10",
max(case when pagenumber between 11 and 20 then pagenumber end) as "11-20",
max(case when pagenumber between 21 and 30 pagenumber end) as "21-30"
from t
group by (pagenumber%10)
order by 1
Группировка по (например) 1, 11 и 21 помещает в одну строку, потому что все они имеют одинаковый результат для операции мода: 1. 2, 12, 22 переходят в другую строку (результат мода равен 2) .
Если ваше требование касается, например, 1, 12 и 23 для всех в одной строке, вам придется усложнить группировку (найдите способ, чтобы математически все 1, 12 и 23 возвращали одно и то же значение .. как (x%10)-((x/10)+1)
)