Анализ поля T-SQL - PullRequest
       37

Анализ поля T-SQL

0 голосов
/ 16 апреля 2009

В сторонней базе данных есть поле, по которому мне нужно сгруппироваться для отчета, который я пишу. Поле может содержать несколько разных типов данных. Сначала он может содержать трехзначное число. Мне нужно разбить их на группы, например, от 101 до 200 и от 201 до 300. В дополнение к этому, в поле также может быть указана конкретная буква, такая как M или K, а затем несколько цифр. Он определен как VARCHAR (8), и любая помощь в том, как я мог бы справиться с обоими случаями, когда он может начинаться с конкретной буквы или попадать в числовой диапазон, будет принята с благодарностью. Если бы я мог написать это в качестве выписки по делу и вернуть отдел на основе числового значения или первой буквы, которая была бы наилучшей, чтобы я мог сгруппировать ее в своем отчете.

Спасибо, Стивен

Ответы [ 2 ]

1 голос
/ 16 апреля 2009

Если бы я мог написать это как заявление о ситуации и вернуть отдел на основе числового значения или первой буквы, которая была бы лучшей, чтобы я мог сгруппировать ее в своем отчете.

case when substring( field, 1, 1 ) = 'M' then ...
when substring( field, 1, 1 ) = 'K" then ...
else floor( (cast( field as int) - 1 ) / 100) end 


   select ....
   group by 
    case when substring( field, 1, 1 ) = 'M' then ...
    when substring( field, 1, 1 ) = 'K" then ...
    else floor( (cast( field as int) - 1 ) / 100) end 

Мэтт Гамильтон спрашивает,

По какой причине вы решили использовать подстроку (field, 1, 1), а не просто левую (field, 1)? Я заметил, что @jms сделал это тоже, в другом ответе.

Я знаю, substring указано в ANSI-92; Я не знаю, что это left. И в любом случае, left не является примитивом, так как его можно записать в терминах substring, поэтому использование substring кажется немного чище.

0 голосов
/ 16 апреля 2009
select
CASE  (CASE WHEN substring(field,1,1) between 0 and 9 then 'N' Else 'C' END)
WHEN 'N' THEN
    CASE field
        WHEN ... THEN ...
        WHEN ... THEN ...
    END
WHEN 'C' THEN
    CASE field
        WHEN ... THEN ...
        WHEN ... THEN ...
    END
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...