Aliasy, které jsou definovány v klauzuli SELECT, nemůžete použít k výpočtu jiných sloupců, které jsou také ve stejné klauzuli SELECT. Máte alespoň tři možnosti:
-
Poddotaz opakujte pokaždé, když jej potřebujete použít. To má tu nevýhodu, že budete muset opakovat hodně kódu. Vzhledem k tomu, že vaše poddotazy jsou dlouhé a složité, je tato možnost nežádoucí.
-
Použijte poddotaz a vnější dotaz.
SELECT *, (subtotal - payment) AS balance FROM ( SELECT ..., (...) AS subtotal, (...) AS payment FROM ... ) T1
-
Místo dílčích výběrů použijte JOIN. Toto je pro vaši situaci o něco složitější, ale z hlediska výkonu bude lepší, pokud budete někdy potřebovat načíst více než jeden řádek.