|
|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : Anton M.Starkov 2:5020/400 20 May 2002 14:26:26 To : Dmitry Novikov Subject : Re: Параметрический ORDER BY -------------------------------------------------------------------------------- "Dmitry Novikov" <dim@rnivc.kis.ru> wrote in message news:ac5d74$1en3$1@ddt.demos.su... > Всем привет! > Говорил бы что ли, какой сервер... Вот для MS SQL: Извиняюсь, перепутал конференции, хотел в fido7.su.dbms.mssql > declare @i int > select @i = 2 > select * from MyTable > order by case @i when 1 then Field1 when 2 then Field2 else Field3 end > Да, я написал похожий код, но столкнулся с непонятной для меня особенностью, что и вызвало у меня сомнение в првильности моего кода. Итак вот моя хп. declare @SortOrder int select @SortOrder = 1 SELECT a.Дата, b.HаименованиеКурса, c.Фио FROM learning a LEFT OUTER JOIN list_course b ON a.КодКурса = b.КодКурса LEFT OUTER JOIN list_staff c ON a.ПостоянныйHомер = c.ПостоянныйHомер ORDER BY CASE @SortOrder WHEN 1 THEN Фио WHEN 2 THEN HаименованиеКурса WHEN 3 THEN Дата ELSE Фио END Таблица learning (Дата smalldatetime, КодКурса int, ПостоянныйHомер int ) - список оконченных курсов Таблица list_course (КодКурса int, HаименованиеКурса varchar ) - список всех курсов Таблица list_staff (ПостоянныйHомер int, Фио varchar ) - список персонала 1. Если @SortOrder =3 , то процедура отрабатывает, если нет то - Syntax error converting character string to smalldatetime data type. Если убрать WHEN 3 - отрабатывает правильно. Что я сделал неправильно? 2. Как написать код сортировки по нескольким полям, например 'HаименованиеКурса,Фио' или обратной сортировки 'Фио DESC' -- SY Anton M.Starkov --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/12840e0067bac.html, оценка из 5, голосов 10
|