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

Откуда:
Сообщений: 26
допустим есть поле n. в нём встречаются известные строки 'a', 'b', 'c'. как отсортировать таблицу в порядке b-c-a например?
27 ноя 09, 16:51    [7989294]     Ответить | Цитировать Сообщить модератору
 Re: ORDER BY  [new]
Ozzy-Osbourne
Member

Откуда: Balashikha
Сообщений: 139
lenden31,
declare @t table(str varchar)
insert @t select 'a'
insert @t select 'b'
insert @t select 'c'
select str
from @t
order by case str when 'b' then 1 when 'c' then 2 when 'a' then 3 end
27 ноя 09, 16:55    [7989331]     Ответить | Цитировать Сообщить модератору
 Re: ORDER BY  [new]
Spartakich
Member

Откуда: Riga
Сообщений: 380
lenden31,

ORDER BY n DESC
27 ноя 09, 16:55    [7989334]     Ответить | Цитировать Сообщить модератору
 Re: ORDER BY  [new]
Spartakich
Member

Откуда: Riga
Сообщений: 380
Spartakich
lenden31,

ORDER BY n DESC



упс! незаметил, что b-c-a
27 ноя 09, 16:56    [7989349]     Ответить | Цитировать Сообщить модератору
 Re: ORDER BY  [new]
lenden31
Member

Откуда:
Сообщений: 26
Ozzy-Osbourne

щас попробую

Spartakich

а если повнимательнее?
27 ноя 09, 16:57    [7989355]     Ответить | Цитировать Сообщить модератору
 Re: ORDER BY  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Ozzy-Osbourne
lenden31,
declare @t table(str varchar)
insert @t select 'a'
insert @t select 'b'
insert @t select 'c'
select str
from @t
order by case str when 'b' then 1 when 'c' then 2 when 'a' then 3 end
SQL 2008
DECLARE @T TABLE(S CHAR);
INSERT @T(S) VALUES('a'),('b'),('c');

SELECT T.S
FROM @T T JOIN (VALUES(3,'a'),(1,'b'),(2,'c')) U(O,S) ON T.S=U.S
ORDER BY U.O;
Вместо (VALUES(3,'a'),(1,'b'),(2,'c')) U(O,S) может быть, конечно же, нормальная таблица, задающая порядок сортировки.
27 ноя 09, 20:22    [7990352]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить