K odkazování na sloupce v klauzuli ORDER BY nelze použít proměnné vazby (parametry). Proměnnou bind však můžete použít ve výrazu jako:
@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>>
Do příkazu CASE budete muset přidat samostatnou klauzuli WHEN pro každý sloupec/výraz, podle kterého chcete třídit, a možná budete potřebovat nebo chtít přidat klauzuli ELSE pro situace, kdy proměnná vazby :order neodpovídá žádné z vaše standardní případy.
Omezení vazebných proměnných platí také pro klauzuli where a projekci (výběrový seznam). Proměnné Bind mají ve vašich příkladech své vlastní hodnoty buď String nebo Int pro :order a :numberOfCoins.