access中如何查询a字段中的某1个值对应的所有b字段中包含特定的多个值的记录

日期 资金 用户名
2014/8/12 10 张三
2014/8/12 20 张三
2014/8/13 3 李四
2014/8/13 2 赵六
2014/8/13 123 小明
2014/8/13 33 张三
2014/8/14 44 张三
2014/8/15 44 李四
2014/8/16 555 李四
2014/8/17 11 李四
2014/8/17 23 李四
2014/8/17 3423 王五
2014/8/12 55 王五
2014/8/12 44 王五
是否有可能用一个查询统计出每天当中各个用户的资金总额是多少呢,如果能的话应该如何编写SQL,如果不能的话能否指导一下在数据量挺大的情况下该如何统计呢,晚饭感谢
额,最后统计出来的结果我希望是同一个人的所有结果都合成一条数据,因为数据量确实不小,所以一直没有太好的办法弄
最新回答
绝绝子

2024-11-03 00:29:40

用日期和用户名分组汇总金额字段即可求出来


SQL语句如下:


select 日期,用户名,sum(资金) as 资金总额 from 你的表名 group by 日期,用户名 order by 日期,用户名


将上述SQL语句套上正确的表名,复制黏贴到SQL查询视图,点击工具栏运行命令(带叹号图标的)即可求出每天每个用户的资金总额。


*****关于楼主问题补充,更好解决,单用用户名分组汇总即可*****

select 用户名,sum(资金) as 资金总额 from 你的表名 group by 日期 order by 用户名


SQL查询视图

查询设计视图

运行结果

狗屎味的小仙女

2024-11-03 00:11:04

select * from 表X
where 姓名 in
(select 姓名
from (select distinct 姓名 from 表X where instr(购买物,'苹果')>0
union all select distinct 姓名 from 表X where instr(购买物,'香蕉')>0) as T
group by 姓名
having count(*)=2
)
与T对应的子查询是一个union all,union all与union的区别是union all不管是否重复都并起来,
如{1,2} union all {2,3}={1,2,2,3},而{1,2} union {2,3}={1,2,3}
为什么这里要用distinct呢?那是因为同一个人可能多次购买同一种水果,不能重复把姓名再记录一次。
select distinct 姓名 from 表X where instr(购买物,'苹果')>0 的意思就是购买苹果的人只查出来一次,
select distinct 姓名 from 表X where instr(购买物,'香蕉')>0) 的意思就是购买香蕉的人也只查出来一次,
把它们并在一起,然后按姓名分组并计算次数是否为2,是则表示它同时购买了这2种水果。
最后利用in来判断表X中姓名在查出来的姓名中,是就把他的所有购买记录全选出来