Использование ASC / DESC в ORDER BY CASE () - PullRequest
0 голосов
/ 06 января 2011

Что мне нужно сделать, так это заказать их в классах, лабораториях, лекционных залах, а затем в аудиториях.Что мне тогда нужно сделать, это организовать их по их удостоверению личности.Поэтому для классов я начинаю с 1 и поднимаюсь соответственно.

Единственные поля, которые я использую - это roomID и столбец типа.(Должен ли тип изменить, видя, что это SQL-функция?Таким образом, любая помощь будет принята с благодарностью, тем более что это, вероятно, глупый вопрос.

Ответы [ 3 ]

2 голосов
/ 06 января 2011

Похоже, что вы должны сделать это поместить оператор case в поля вашего запроса и дать ему псевдоним. Затем установите свой заказ по заявлению, чтобы использовать этот псевдоним.

SELECT *,
CASE
WHEN type = 'Classroom' THEN 1
WHEN type = 'Computer laboratory' THEN 2
WHEN type = 'Lecture Hall' THEN 3
WHEN type = 'Auditorium' THEN 4
END AS ClassTypeValue
FROM rooms
ORDER BY ClassTypeValue

Если я правильно помню, это должно сработать.

1 голос
/ 06 января 2011

На всякий случай, если ответ Spinon не работает для вас, вы всегда можете сделать это в виде строки

SELECT * 
FROM
(

    SELECT *,
        CASE
        WHEN type = 'Classroom' THEN 1
        WHEN type = 'Computer laboratory' THEN 2
        WHEN type = 'Lecture Hall' THEN 3
        WHEN type = 'Auditorium' THEN 4
        END AS ClassTypeValue
    FROM rooms
) t
ORDER BY ClassTypeValue
0 голосов
/ 07 января 2011
SELECT *
FROM
    (
    SELECT *,
        CASE
        WHEN type = 'Classroom' THEN 1
        WHEN type = 'Computer laboratory' THEN 2
        WHEN type = 'Lecture Hall' THEN 3
        WHEN type = 'Auditorium' THEN 4
        END AS ClassTypeValue
    FROM rooms
    ) t
ORDER BY ClassTypeValue, maxppl, roomID

Это последний запрос, который я использовал.Спасибо, ребята, что помогли мне и объяснили это мне.

...