Круглый номер TSQL и проверьте, в какой группе он находится - PullRequest
1 голос
/ 13 марта 2012


У меня довольно простая задача:
Я должен проверить в какой группе мой номер поплавка.

Вот мои группы:

  • 0-30 дисплей "(0-30)"
  • 30-40 дисплей "(0-30)"
  • 40-50 дисплей "(0-30)"
  • 50-60 дисплей "(0-30)"
  • и т.д.

Я создал простой скрипт:

DECLARE @num FLOAT
SET @num = 42.5;
SELECT CASE WHEN @num<=30 THEN '(0-30)' 
           ELSE  '('+convert(VARCHAR,convert(INT,round((@num/10),0))*10)+'-'+convert(VARCHAR,convert(INT,round(((@num+10)/10),0))*10)+')' 
       END

Я думаю, что это немного неубедительно, так что если кто-нибудь может помочь мне с созданием лучшего решения:)

Спасибо за любой совет:)

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Или вы можете использовать: (чтобы избавиться от оператора CASE и получить более читабельный вид, IMO)

declare @num float = 156

select
    '(' + convert(varchar, lowLimit) + ' - ' + convert(varchar, highLimit) + ')'
from
    (
        select
            0 as lowLimit,
            30 as highLimit
        where
            @num <= 30

        union all

        select
            floor(@num/10)*10,
            ceiling(@num/10)*10
        where
            @num > 30
    ) limits
1 голос
/ 13 марта 2012

Использование:

DECLARE @num FLOAT
SET @num = 311.2;
SELECT
CASE
    WHEN @num <= 30
        THEN '(0-30)'
    ELSE '(' + cast(cast(@num AS INT) / 10 * 10 AS VARCHAR) + '-' + cast(cast(@num AS INT) / 10 * 10 + 10 AS VARCHAR) + ')' END
...