SELECT句で定義されているエイリアスを使用して、同じSELECT句にある他の列を計算することはできません。少なくとも3つのオプションがあります:
-
使用する必要があるたびにサブクエリを繰り返します。これには、多くのコードを繰り返す必要があるという欠点があります。サブクエリは長く複雑なので、これは望ましくないオプションです。
-
サブクエリと外部クエリを使用します。
SELECT *, (subtotal - payment) AS balance FROM ( SELECT ..., (...) AS subtotal, (...) AS payment FROM ... ) T1
-
副選択の代わりにJOINを使用します。これは状況によっては少し複雑ですが、複数の行をフェッチする必要がある場合はパフォーマンスが向上します。