Таблица transactions
с псевдонимом t
не содержит столбец year
(который является производным столбцом). Измените это на:
select strftime('%Y', t.`date`, 'unixepoch') as `year` from transactions as t
left join (
select sum(amount) as `expenses`,
strftime('%Y', `date`, 'unixepoch') as `year` from transactions
where type = -1 and user_id = 1
group by strftime('%Y', `date`, 'unixepoch')
) as e on e.year = strftime('%Y', t.`date`, 'unixepoch')
left join (
select sum(amount) as `income`,
strftime('%Y', `date`, 'unixepoch') as `year` from transactions
where type = 1 and user_id = 1
group by strftime('%Y', `date`, 'unixepoch')
) as i on i.year = strftime('%Y', t.`date`, 'unixepoch')
group by strftime('%Y', t.`date`, 'unixepoch');
Я предполагаю, что есть другие столбцы из соединенных таблиц, которые вы хотите вернуть, но не в текущем коде. Я думаю, что это то, чего вы хотите достичь:
select
strftime('%Y', t.`date`, 'unixepoch') as `year` ,
sum(case when type = -1 and user_id = 1 then amount end) as `expenses`,
sum(case when type = 1 and user_id = 1 then amount end) as `income`
from transactions as t
group by strftime('%Y', t.`date`, 'unixepoch');