#sql #postgresql #column-alias
Вопрос:
У меня есть данные, которые я запрашиваю
total_a | total_b | sum |
1200 500 ?
это мой вопрос
select
ROUND(SUM(CASE WHEN status= 0 THEN total_budget ELSE 0 END)) AS total_a,
ROUND(SUM(CASE WHEN status= 1 THEN total_sisa_tahun_lalu ELSE 0 END)) AS total_b,
SUM(COALESCE(total_a,0) COALESCE(total_b,0))
from product
в моем запросе не удалось суммировать псевдоним псевдоним
Ответ №1:
Вы не можете ссылаться на псевдоним столбца в том SELECT
месте, где он определен. Причина проста: SQL не гарантирует порядок вычисления выражений в SELECT
.
Вы можете использовать CTE, вложенный запрос или повторить выражение:
select ROUND(SUM(CASE WHEN status= 0 THEN total_budget ELSE 0 END)) AS total_a,
ROUND(SUM(CASE WHEN status= 1 THEN total_sisa_tahun_lalu ELSE 0 END)) AS total_b,
SUM(CASE WHEN status = 0 THEN total_budget
WHEN status = 1 THEN total_sisa_tahun_lalu
ELSE 0
END)
from product