Select exp_cat.cat_name
, (Select Sum(c1.exp_amount)
From exp_cheque As c1
Inner Join exp_cat As c2
On c2.Id = c1.exp_cat_id
Where c2.cat_name = exp_cat.cat_name) As cheque
, (Select Sum(c1.exp_amount)
From exp_cash As c1
Inner Join exp_cat As c2
On c2.Id = c1.exp_cat_id
Where c2.cat_name = exp_cat.cat_name) As cash
From exp_cat
Where exp_cat.cat_name Is Not Null
Group By exp_cat.cat_name
Если для exp_cat.cat_name
существует уникальное ограничение, вы можете исключить предложение Group By.
Учитывая, что это Access, в долгосрочной перспективе может быть более эффективно создать два сохраненных запроса на наличные деньги и чек, сгруппированных по exp_cat.cat_name
. Тогда вы могли бы написать что-то вроде:
Select exp_cat.cat_name
, Sum( cheque.Total ) As chequeTotal
, Sum( cash.Total ) As cashTotal
, Sum( cheque.Total ) + Sum( cash.Total ) As ChequeAndCashTotal
From exp_cat
Left Join chequeBycat_name As cheque
On cheque.exp_cat.cat_name = exp_cat.cat_name
Left Join cashBycat_name As cash
On cash.exp_cat.cat_name = exp_cat.cat_name
Where exp_cat.cat_name Is Not Null
Group By exp_cat.cat_name
Каждый из двух запросов будет выглядеть так:
Select exp_cat.cat_name, Sum(exp_cheque.exp_amount) As Total
From exp_cat
Inner Join exp_cheque
On exp_cheque.exp_cat_id = exp_cat.Id
Where exp_cat.cat_name Is Not Null
Group By exp_cat.cat_name