Du kan inte använda alias som är definierade i SELECT-satsen för att beräkna andra kolumner som också finns i samma SELECT-sats. Du har minst tre alternativ:
-
Upprepa underfrågan varje gång du behöver använda den. Detta har nackdelen att du kommer att behöva upprepa mycket kod. Eftersom dina underfrågor är långa och komplexa är detta ett oönskat alternativ.
-
Använd en underfråga och en yttre fråga.
SELECT *, (subtotal - payment) AS balance FROM ( SELECT ..., (...) AS subtotal, (...) AS payment FROM ... ) T1
-
Använd en JOIN istället för subselects. Detta är något mer komplicerat för din situation, men det kommer att vara bättre för prestandan om du någonsin behöver hämta mer än en rad.