Sql Order By… usando `Case When` para diferentes ordens ascendentes, descendentes e personalizadas

Eu quero ordenar o produto pelo desconto em certa condição

ORDER BY 
    CASE WHEN @OrderBy = 0
    THEN table.id END ASC,
    CASE WHEN @Orderby = 2
    THEN table.id END ASC,

Eu quero fazer algo como abaixo, como eu não tenho desconto coluna na tabela

CASE WHEN @OrderBy = 4
THEN (100-((table.price/table.oldprice)*100) as discount END ASC

mas isso gera um erro - como posso classificar por desconto?

questionAnswers(3)

yourAnswerToTheQuestion