职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1477|回复: 5

请教要实现这个查询的SQL语句怎么写啊?

[复制链接]
技安 发表于 2009-9-10 09:23 | 显示全部楼层 |阅读模式
姓名 城市 性别 工资 日期
1 张三 深圳 男 1000 2005-1-1
2 张三 深圳 男 1500 2006-1-1
3 李四 上海 女 500 2005-1-1
4 李四 上海 女 1000 2007-1-1
5 李四 广州 女 1000 2004-1-1
6 王五 北京 男 1000 2005-1-1
这个表中,我想先按照姓名和城市分组,然后在每个组中筛选出距离目前日期最近的那条记录(以上要求都是在不知道具体的数据是什么的情况下进行查询).
所以结果应该是2,4,5,6这4条记录.
请问用一条SQL语句实现以上功能,这条语句应该怎么写啊?
梦幻芭蕾 发表于 2009-9-10 09:24 | 显示全部楼层

请教要实现这个查询的SQL语句怎么写啊?

不用看了这条语句是正确的,其他的都不知道写的人是怎么想的!!还有提问的表结构没写清楚,识别主键也没有,只能通过姓名 ,城市,日期来识别一条记录

select a.* from 表 a left join (select 姓名,城市,max(日期) as 日期 from 表 group by 姓名,城市) b on a.姓名=b.姓名 and a.城市=b.城市 and a.日期=b.日期
wpq88 发表于 2009-9-10 09:24 | 显示全部楼层

请教要实现这个查询的SQL语句怎么写啊?

Select [姓名], [城市], [性别], [工资], Max([日期]) From [表]
Group By [日期]
车大炮 发表于 2009-9-10 09:24 | 显示全部楼层

请教要实现这个查询的SQL语句怎么写啊?

select * from 表名 a,(SELECT [姓名],[城市],max([日期])as [日期]
FROM 表名 group by [姓名],[城市]) b
where a.姓名=b.姓名 and a.城市=b.城市 and a.日期=b.日期
fl 发表于 2009-9-10 09:24 | 显示全部楼层

请教要实现这个查询的SQL语句怎么写啊?

SELECT * FROM (SELECT 姓名,城市,性别,工资,日期 ROW_NUMBER() OVER (PARTITION BY 姓名,城市 ORDER BY 日期 DESC) AS RN FROM TABLE1) WHERE RN=1

你看看日期排序方法对不对
不对用ORDER BY 日期 asc
suiyuan_5 发表于 2009-9-10 09:24 | 显示全部楼层

请教要实现这个查询的SQL语句怎么写啊?

select a.* from 表 a left join (select 姓名,城市,max(日期) as 日期 from 表 group by 姓名,城市) b on a.姓名=b.姓名 and a.城市=b.城市 and a.日期=b.日期
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-2 07:21 , Processed in 0.128659 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表