关闭

[置顶] Oracle去掉重复数据

125人阅读 评论(0) 收藏 举报
分类:

查询中经常会遇到需要过滤掉重复数据的情况,或者需要获取某个ID下的最新一条记录。

特别是做过水利项目的朋友,如获取站点的实时水位数据,则需要进行数据去重的方法。

以下是项目中用到的sql,分享给有需要的朋友。谢谢。


--数据正常查询,重复数据过多
--如下所示为常用水位数据表,经常需要仅获取每个站点的最新一条记录
select stcd,tm,upz from st_was_r where tm between to_date('2016-04-01 08:00:00','yyyy-MM-dd HH24:MI:SS') and to_date('2016-04-02 08:00:00','yyyy-MM-dd HH24:MI:SS') order by stcd ,tm desc;

未去重数据:



去重数据。

--可利用row_number和over进行数据的过滤 ,查询条件一样 

select * from (
       select stcd,tm,upz,row_number() over( partition by stcd  order by tm desc) as rn  from  st_was_r 
        where tm between to_date('2016-04-01 08:00:00','yyyy-MM-dd HH24:MI:SS') and to_date('2016-04-02 08:00:00','yyyy-MM-dd HH24:MI:SS') ) t 
where t.rn=1  

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:31326次
    • 积分:570
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:27篇
    • 译文:0篇
    • 评论:11条
    文章分类
    最新评论