Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сортировка числового диапазона  [new]
ucs13
Member

Откуда:
Сообщений: 8
Всем привет!

Будьте добры, посоветуйте как отсортировать текстовое поле xINERVAL в таблице @A. В этом поле хранятся числовые диапазоны, формируется они динамически и повлиять на порядок при формировании я не могу.

declare @A table (xINERVAL varchar(128), SilverCNT bigint); 


select 
xINERVAL,
sum (ISNULL(SilverCNT,0)) qSilverCNT
from @A
group by xINERVAL
order by xINERVAL


После применения сортировки order by xINERVAL это поле имеет вид:
0.000.000 - 12.999
104.000.000 - 116.999
117.000.000 - 129.999

13.000.000 - 25.999
26.000.000 - 38.999
39.000.000 - 51.999
52.000.000 - 64.999
65.000.000 - 77.999
78.000.000 - 90.999
91.000.000 - 103.999
От 130.000.000

А надо чтобы:

0.000.000 - 12.999
13.000.000 - 25.999
26.000.000 - 38.999
39.000.000 - 51.999
52.000.000 - 64.999
65.000.000 - 77.999
78.000.000 - 90.999
91.000.000 - 103.999
104.000.000 - 116.999
117.000.000 - 129.999

От 130.000.000

Огромное спасибо!
23 мар 17, 14:14    [20325875]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка числового диапазона  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
ucs13,

надо дополнить слева нулями так, чтобы количество символов до первой точки было одинаковым во всех строках.
Это достаточно сделать только в ORDER BY
23 мар 17, 14:24    [20325939]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка числового диапазона  [new]
o-o
Guest
order by cast(PARSENAME(xINERVAL, 4) as int)
23 мар 17, 14:27    [20325969]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка числового диапазона  [new]
ucs13
Member

Откуда:
Сообщений: 8
o-o
order by cast(PARSENAME(xINERVAL, 4) as int)


спасибо! но при вашем подходе запись "От ..." получается на первом месте же
23 мар 17, 14:35    [20326045]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка числового диапазона  [new]
o-o
Guest
order by cast(PARSENAME(replace(xINERVAL, N'От ', '999999999.'), 4) as int)
23 мар 17, 14:45    [20326120]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка числового диапазона  [new]
ucs13
Member

Откуда:
Сообщений: 8
o-o, огромное спасибо!
23 мар 17, 14:56    [20326189]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить