如何创建一个查询,为那些未分类的事务提供默认事务类型?
所以假设我有:
- 事务处理表(包含事务处理)
- 类别表
- transactions_categories表-允许分配多个类别(带百分比)
- 使用是这样的,只有非个人类别已经应用于整个数据。因此,有很多交易没有应用类别
目标:
- 想要创建一个查询来创建所有分配金额的列表,因此将包括以下列:transaction.tDate、transaction.tTitle、categories.name、allocatedAmount(根据百分比*交易金额计算)
但是:
- 我如何在查询中包括涵盖所有尚未分配的交易的条目,以默认类别"个人",其中分配的金额将是交易价值的100%
- 此外(如果可能的话),对于已经分类但没有完整交易价值的交易(比如说只有50%分配给一个类别),如何将其覆盖到
示例
Transactions
1 XXXX $100
2 YYY $100
3 ZZZ $100
Categories
1 aaa
2 bbb
3 ccc
4 PersonalDefault
Transaction-Categories (i.e. allocation)
transID catID %
1 1 100%
2 2 50%
Query Output I'm After
transTitle catTitle AllocatedAmount
xxxx aaaaa $100
yyyyy bbbbbb $50
yyyyy PersonalDefault $50
zzzzz PersonalDefault $100
此查询将为您提供所需的结果:
select a.transID, t.name as transname, a.catID, c.name as catname, t.amount * a.pc / 100 as amnt
from allocation a inner join transactions t on a.transID = t.id
inner join categories c on a.catID = c.id
union all
select a.transID, t.name as transname, 4 as catID, 'PersonalDefault' as catname, t.amount * (100 - a.pc) / 100 as amnt
from allocation a inner join transactions t on a.transID = t.id
where a.pc < 100
union all
select t.id as transID, t.name as transname, 4 as catID, 'PersonalDefault' as catname, t.amount as amnt
from transactions t
where t.id not in (select transID from allocation)
检查这个SQL Fiddle(它是SQL Server,但也应该在Access中工作)