Bạn không thể sử dụng bí danh được xác định trong mệnh đề SELECT để tính toán các cột khác cũng nằm trong cùng mệnh đề SELECT. Bạn có ít nhất ba tùy chọn:
-
Lặp lại truy vấn con mỗi khi bạn cần sử dụng. Điều này có nhược điểm là bạn sẽ cần phải lặp lại rất nhiều mã. Vì các truy vấn phụ của bạn dài và phức tạp, đây là một tùy chọn không mong muốn.
-
Sử dụng truy vấn con và truy vấn bên ngoài.
SELECT *, (subtotal - payment) AS balance FROM ( SELECT ..., (...) AS subtotal, (...) AS payment FROM ... ) T1
-
Sử dụng JOIN thay vì các lựa chọn con. Điều này hơi phức tạp hơn đối với tình huống của bạn, nhưng sẽ tốt hơn cho hiệu suất nếu bạn cần tìm nạp nhiều hơn một hàng.