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

一路sql题目。去重复

2013-06-19 
一道sql题目。。。去重复sql题目--oracle表a中 有2个日期字段 一个是updateDate 一个是lastDate例如:表结构是

一道sql题目。。。去重复
sql题目--oracle
表a中 有2个日期字段 一个是updateDate 一个是lastDate
例如:表结构是:
 name  updateDate  lastDate
 数据可能是
 name    updateDate         last
 one   2013/2/21 14:37:17   2013/2/28 14:37:17
 two   2013/2/28 14:37:17   2013/2/28 14:37:17
 one   2013/2/23 14:37:17   2013/2/21 14:37:17
 one   2013/2/28 14:37:17   2013/2/28 14:37:17
 。。。。。。

要求找出 lastDate相同。 要求找出lastDate时间为2013/2/28 14:37:17的不重复人的name(重复的记录去最大updateDate值的那条)

SQL 去重复
[解决办法]

引用:
sql题目--oracle
表a中 有2个日期字段 一个是updateDate 一个是lastDate
例如:表结构是:
 name  updateDate  lastDate
 数据可能是
 name    updateDate         last
 one   2013/2/21 14:37:17   2013/2/28 14:37:17
 two……


 select distinct(name),updatetime,lasttime from tabletest a
 where  
    a.updatetime =
    ( 
      select max(b.updatetime) from tabletest b
      where a.name= b.name
    )    
    and a.lasttime =TO_DATE('2013/2/28 14:37:17','yyyy/mm/dd hh24:mi:ss')
    ;
[解决办法]
with tt as(
select name,updateDate,lastDate,row_number() over(partition by name,lastDate order by updateDate desc) rn from tab_name 
where lastDate='2013/2/28 14:37:17'
)
select name,updateDate,lastDate from tt where rn=1;

--去掉where lastDate='2013/2/28 14:37:17',可以找出每个时间点的不重复人的name
[解决办法]
去重~ oracle经典面试题~
分析函数 
max(rowid)

热点排行