0

I have the data I'm querying

total_a | total_b | sum |
1200       500       ?

this my query

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

my query didn't succeed in summing the alias alias

Jon
  • 109
  • 2
  • 10

1 Answers1

1

You cannot reference a column alias in the SELECT where it is defined. The reason is simple: SQL does not guarantee the order of evaluation of expressions in the SELECT.

You can use a CTE, subquery, or repeat the expression:

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
Gordon Linoff
  • 1,242,037
  • 58
  • 646
  • 786