Wie ich sehe, castest du die Felder, vergibts allerdings keine neue Namen.
Ggf. ist das hier das Problem, da die Order-By-Klausel auf ein Feld verweist, dass nicht in deiner Select-Liste steht !
Das ist zwar erlaubt, könnte aber das Problem sein.

Ergänze die Cast's mal mit einem Namen:

... cast(Feld as ...) Feld, ...