Я не знаю, что full outer join
подходит для этого, но что это не ваш вопрос. Но просто используйте подзапрос:
SELECT v.*
FROM (SELECT SUM(i.Income) AS Income,
SUM(a.Amount) AS Debt,
SUM(i.Income) - SUM(a.Amount) AS difference
FROM Accounts_tbl a FULL OUTER JOIN
Income_tbl i
ON a.id = i.id
) ai CROSS APPLY
(VALUES ('Income', Income), ('Debt', Debt), ('Difference', difference)
) v(type, amt);
Вероятно, гораздо эффективнее это сделать:
with ai as (
select 'income' as type, sum(income) as amt
from income_tbl
union all
select 'debt', sum(amount) as amt
from accounts_tbl
)
select ai.*
from ai
union all
select 'difference',
sum(case when type = 'income' then amt else - amt end)
from ai;