ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > SQL in Excel > 如何查询每个人最早的一行完整信息记录?

如何查询每个人最早的一行完整信息记录?

作者:绿色风 分类: 时间:2022-08-17 浏览:273
楼主
海洋之星
Q:如何查询每个人最早的一行完整信息记录?
问题描述:在数据源中存放着每个人多条相关信息记录,现在想查询每个人最早出现的一条完整信息记录,效果如下图所示:

 
A:可以先利用MIN聚合函数和GROUP BY 子句找到每个人在数据源中最早出现的日期,再通过日期利用左连接将其完整信息连接起来即可。
  1. select a.时间,a.姓名,电话量 from (select min(时间) as 时间,姓名 from [sheet1$] group by 姓名) a,(select * from [sheet1$]) b where a.时间=b.时间 and a.姓名=b.姓名



 


不重复筛选求助.rar


该帖已经同步到 海洋之星的微博



2楼
wjc2090742
1、最早出现的日期,为什么是用max?
2、a.时间=b.时间,一个条件是不够的。上次提取银包大类最高销售产品的题目中,也犯过一样的错误了,一点都没记住。A3单元格改成2011-5-8,结果就错了。

 
3、2楼的天下,只是为了抢沙发的吗?
3楼
海洋之星
谢谢翁翁提醒:
1、时间值越大那么日期越晚,所以需要用MIN聚合函数
2、如果只用一个a.时间=b.时间,假如A的最早时间与B的不是最早时间相同,这条错误记录也会被查询出来,所以需要再一个条件:a,姓名=b.姓名。
是否正确请指教?
4楼
LOGO
不知完整的信息记录怎么理解。

若数据源中的数据是按时间顺序的升序排列的话,貌似这样也是可以的
  1. select first(时间) as 时间,姓名,first(电话量) as 电话量 from [Sheet1$]
  2. group by 姓名 order by first(时间)
5楼
LOGO
乱序也能用的:
  1. select * from [sheet1$] where 时间 in  (select dmin('时间','sheet1,"姓名='"&姓名&"'") from [sheet1$])

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap