Non è possibile utilizzare gli alias definiti nella clausola SELECT per calcolare altre colonne che si trovano anche nella stessa clausola SELECT. Hai almeno tre opzioni:
-
Ripetere la sottoquery ogni volta che è necessario utilizzarla. Questo ha lo svantaggio di dover ripetere molto codice. Poiché le tue sottoquery sono lunghe e complesse, questa è un'opzione indesiderabile.
-
Usa una sottoquery e una query esterna.
SELECT *, (subtotal - payment) AS balance FROM ( SELECT ..., (...) AS subtotal, (...) AS payment FROM ... ) T1
-
Usa un JOIN invece di sottoselezioni. Questo è leggermente più complesso per la tua situazione, ma sarà migliore per le prestazioni se dovessi recuperare più di una riga.