Не можете да използвате свързващи променливи (параметри) за препратка към колони в клаузата ORDER BY. Можете обаче да използвате променливата за свързване в израз като този:
@Query("select * from coin ORDER BY
CASE :order
WHEN 'percent_change_24h' THEN percent_change_24h
WHEN 'other_column_name' THEN other_column_name
END asc limit :numberOfCoins")
fun getAllTop(order: String, numberOfCoins: Int): Flowable<List<CoinDB>>
Ще трябва да добавите отделна клауза WHEN към оператора CASE за всяка колона/израз, по който искате да сортирате, и може да се наложи или искате да добавите клауза ELSE за ситуациите, когато променливата за свързване :order не съвпада с никоя от вашите стандартни случаи.
Ограничението върху променливите за свързване също е вярно за клаузата where и проекцията (списък за избор). Променливата за свързване има свои собствени стойности във вашите примери или String или Int за :order и :numberOfCoins съответно.