Sie können keine Aliase verwenden, die in der SELECT-Klausel definiert sind, um andere Spalten zu berechnen, die sich ebenfalls in derselben SELECT-Klausel befinden. Sie haben mindestens drei Möglichkeiten:
-
Wiederholen Sie die Unterabfrage jedes Mal, wenn Sie sie verwenden müssen. Dies hat den Nachteil, dass Sie viel Code wiederholen müssen. Da Ihre Unterabfragen lang und komplex sind, ist dies eine unerwünschte Option.
-
Verwenden Sie eine Unterabfrage und eine äußere Abfrage.
SELECT *, (subtotal - payment) AS balance FROM ( SELECT ..., (...) AS subtotal, (...) AS payment FROM ... ) T1
-
Verwenden Sie einen JOIN anstelle von Unterauswahlen. Dies ist für Ihre Situation etwas komplexer, aber es ist besser für die Leistung, wenn Sie jemals mehr als eine Zeile abrufen müssen.