想用access写一个查询来管理两个数据表,两个表如示例1和示例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 * from 表1 UNION all select * from 表2)a 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 证件号