Продолжение темы:
SQL case
Postgresql 9.3.
Несколько связанных таблиц:
t4 ()
t3 (t4_id)
t2 (t3_id, valuefact, manualinput)
t1 (t2_id, valuefact)
IF t2.manualinput = TRUE
THEN t2.valuefact
ELSE sum(t1.valuefact)
Для одной таблицы вроде бы проблем нет,
но нужно постоянно вычислять t2.valuefact для таблиц верхнего уровня,
и приходится делать sum (sum (sum.
Логика запросов для меня теряется.
sum(
CASE WHEN t2.manualinput = TRUE
THEN valuefact = t2.valuefact
ELSE valuefact = (select sum(valuefact) from t1 where t1.t2_id = ?)
END
)
Правильно ли создать функцию,
вычисляющую valuefact по t2.id
и потом ее суммировать sum( f(id) )?