access联合汇总查询要怎么实现?

想用access写一个查询来管理两个数据表,两个表如示例1和示例2,希望查询的结果如示例3:将两个表中同条件的人员合并为一条,后面的数据进行合计汇总;不同条件的区分为两条显示,应该怎么写,求求帮忙

img

img

img

以下思路请参考:

  1. 将两个源表JOIN
  2. 对结果集,按字段进行分组 汇总
  3. 最后 按 证件号, 姓名, 方案, 开始日期, 结束日期 进行升序排序
SELECT a.姓名,
       a.证件号,
       a.方案,
       a.开始日期,
       a.结束日期,
       SUM(a.餐饮消费) AS 餐饮消费,
       SUM(a.娱乐消费) AS 娱乐消费,
       SUM(a.交通消费) AS 交通消费
  FROM (
       SELECT a1.姓名, a1.证件号, a1.方案, a1.开始日期, a1.结束日期, a1.餐饮消费, a1.娱乐消费, a1.交通消费 FROM 示例1 a1
       UNION ALL
       SELECT a2.姓名, a2.证件号, a2.方案, a2.开始日期, a2.结束日期, a2.餐饮消费, a2.娱乐消费, a2.交通消费 FROM 示例2 a2
       ) a
 GROUP BY a.姓名, a.证件号, a.方案, a.开始日期, a.结束日期
 ORDER BY a.证件号, a.姓名, a.方案, a.开始日期, a.结束日期;

注意:请确保 餐饮消费, 娱乐消费, 交通消费 没有空值,如果有空值,可在 外层 SQL 的SUM内 做空值判断,并给空值赋0

select a.姓名,a.证件号,a.方案,a.开始日期,a.结束日期, 
sum(a.餐饮消费) 餐饮消费,
sum(a.娱乐消费) 娱乐消费,
sum(a.交通消费) 交通消,
from ( select * from1 UNION all  select * from2a  group by a.姓名,a.证件号,a.方案,a.开始日期,a.结束日期;

SELECT 姓名, 证件号, 方案, 开始日期, 结束日期, SUM(餐饮消费), SUM(娱乐消费), SUM(交通消费)
FROM (
    SELECT * FROM 示例1
    UNION ALL
    SELECT * FROM 示例2
) t
GROUP BY (姓名, 证件号, 方案, 开始日期, 结束日期)
ORDER BY 证件号