Несколько ЗАКАЗАТЬ В СЛУЧАЕ - PullRequest
4 голосов
/ 06 мая 2011

У меня есть оператор выбора, который заканчивается следующим образом:

order by case @pcsort
            when '' then compcode asc
            else received asc, compcode asc
        end

В основном он мне нужен, если @pcsort равен '', тогда порядок по compcode, иначе порядок по received и compcode в таком порядке.

Есть идеи?

1 Ответ

7 голосов
/ 06 мая 2011

Это будет делать, что вы хотите при условии, что типы данных совместимы

order by
    case @pcsort
            when '' then compcode
            else received
    end ASC, 
    compcode ASC

В более общем случае вам нужен один CASE на столбец сортировки при условии, что типы данных совместимы

order by
    case @pcsort
            when '' then compcode
            else received
    end ASC, 
    case @pcsort
           --safe to sort on same column agaon , or use a constant
            when '' then compcode or <constant of same type as compcode>
            else compcode
    end ASC

Если типы данных несовместимы, вам нужно больше дел и много констант

order by
case @pcsort
        when '' then compcode
        else <constant of same type as compcode>
end ASC, 
    case @pcsort
        when '' then <constant of same type as received>
        else received
end ASC, 
case @pcsort
        when '' then <constant of same type as compcode>
        else compcode
end ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...