首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

查询一个表内不重复的并且是最后日期的

2013-12-21 
查询一个表内不重复的而且是最后日期的有一个表Recharge,是充值话费的记录表。这里面有很多手机号码。phone

查询一个表内不重复的而且是最后日期的
有一个表Recharge,是充值话费的记录表。
这里面有很多手机号码。phone  然后充值记录,有个时间字段yxiaqi,
现在要查询。有效期大于今天的
select * from Recharge where yxiaqi>getdate()
是这么查,但是发现。有存在重复的手机号码。我现在想去掉重复的,只要最后时间最长的那个。应该怎么写?
比如手机号码130000000,有2个有效期,2013-12-22和2013-12-24,那么我不要22日的只要24日的。
[解决办法]
select *
from Recharge   a
where exists (select 1 from (select phone,max(yxiaqi)yxiaqi from Recharge  where yxiaqi>getdate() group by phone) b where a.phone=b.phone and a.yxiaqi =b.yxiaqi )
[解决办法]

select *
from 
(
select *,
   max(yxiaqi) over(partition by phone) as max_yxiaqi
from Recharge   a
where  yxiaqi>getdate()
)t
where yxiaqi = max_yxiaqi

热点排行