Sql Order By ... usando `Case When` para diferentes pedidos ascendentes, descendentes y personalizados

Quiero ordenar el producto por descuento en ciertas condiciones

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

Quiero hacer algo como abajo, ya que no tengo una columna de descuento en la tabla

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

pero arroja un error, ¿cómo puedo ordenar por descuento?

Respuestas a la pregunta(3)

Su respuesta a la pregunta