Berechneten Wert wiederverwenden

Ich habe ein materialized view erstellt in dem ich eine Spalte aus der Summe mehrerer anderer Spalten berechnet habe.

coalesce(gbu.value,0) + coalesce(fh.value,0) + coalesce(ga.value,0) + coalesce(kn.value,0) +
coalesce(kr.value,0) + coalesce(sf.value,0) + coalesce(st.value,0) + coalesce(uh.value,0) +
coalesce(wk.value,0) + coalesce(wp.value,0) + coalesce(ww.value,0) + coalesce(fl.value,0) + 

coalesce(pgbu.value,0) + coalesce(pfh.value,0) + coalesce(pga.value,0) + coalesce(pkn.value,0) + 
coalesce(pkr.value,0) + coalesce(psf.value,0) + coalesce(pst.value,0) + coalesce(puh.value,0) +
coalesce(pwk.value,0) + coalesce(pwp.value,0)+ coalesce(pww.value,0) + coalesce(pfl.value,0) as result,

Nun möchte ich in dem selben view eine weitere Spalte anfügen, die sich auf diesen berechneten Wert (result) bezieht

also in etwa so

case when "result" > 8 then 5 
 	when"result" > 4 then 4 
 	when "result" > 2 then 3 
	when"result" > 1 then 2 
 	when"result" > 0.1 then 1 
 	else 0 end as indicator;

Problem ist das er “result” nicht findet da sie ja erst berechnet wird. Ich habe das gelöst indem ich den gesamten oberen Code unten mehrfach eingesetzt habe. Ich möchte fragen ob man das nicht eleganter lösen kann, indem man den wert vielleicht zwischenspeichert und neu nutzt?

Einen Spalten-Alias kann man leider nicht direkt wiederverwenden. Normalerweise löst man das durch eine sog. derived table, manchmal auch als sub-query bezeichnet:

select <andere spalten>, case when result > 8 then ... end as indicator
from (
  select <andere spalten>, coalesce(...) + ... as result
  from ...
) as x