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

Откуда:
Сообщений: 572
Вот кусочек:
SELECT   LASTNAME + ', ' + FIRSTNAME AS LASTNAME
,CASE WHEN OHEM.GOVID='NUE' THEN 'NUE' ELSE OUDP.[NAME] END AS [NAME]

потом сортирую

ORDER BY 
CASE [NAME]
WHEN 'BME' THEN 1
WHEN PFE' THEN 2
WHEN 'NUE' THEN 3
ELSE
0
END

т.е мне надо NUE в конце списка
Но так как CASE меняет (к примеру) BME на NUE по OHEM.GOVID, то сортировка не работает
MSSQL сортирует не по значению после CASE, а до

как обойти?

спасибо
3 дек 09, 02:21    [8011540]     Ответить | Цитировать Сообщить модератору
 Re: CASE и GROUP BY  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
MSSQL сортирует не по значению после CASE, а до


И это видно в плане выполнения? Что даст SELECT @@version?
3 дек 09, 08:20    [8011765]     Ответить | Цитировать Сообщить модератору
 Re: CASE и GROUP BY  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> как обойти?

ORDER BY
   CASE CASE WHEN  OHEM.GOVID='NUE'  THEN  'NUE'  ELSE  OUDP.[NAME] END
     WHEN 'BME' THEN 1
     WHEN 'PFE' THEN 2
     WHEN 'NUE' THEN 3
     ELSE
     0
   END

алиасы в order by можно только напрямую использовать, в составе выражений нельзя.

Posted via ActualForum NNTP Server 1.4

3 дек 09, 08:29    [8011782]     Ответить | Цитировать Сообщить модератору
 Re: CASE и GROUP BY  [new]
pshik
Member [заблокирован]

Откуда:
Сообщений: 572
спасибо
работает
3 дек 09, 21:28    [8016852]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить