Dzięki podzapytaniu masz do dyspozycji wszystkie wiersze:
SELECT sum(val) FROM (
SELECT unnest(array[a1,a2,a3]) as val FROM table) alias;
Możesz także grupować wiersze, na przykład:
SELECT field, sum(val) FROM (
SELECT field, unnest(array[a1,a2,a3]) as val FROM table) alias
GROUP BY field;