oracle 根据单列去重复




select *from (SELECT C.*,

                                      ROW_NUMBER() OVER(PARTITION BY C.B_SNO ORDER BY C.B_SNO DESC) AS BSNO
                                 FROM 表 C
                                where C.NODE_KEY = 'mobileCorrTask'
                                order by OPER_TIME desc)

                        WHERE BSNO = 1


根据B_SNO 字段去重复

主要运用了

 ROW_NUMBER() OVER(PARTITION BY ‘ 字段1‘ ORDER BY ‘字段2‘DESC)

这个函数可以百度下








SQL> SELECT ID,NAME,DATE1,ROW_NUMBER() OVER(partition by ID order by DATE1 desc) as RN FROM T1;

    ID NAME               DATE1               RN
---------- ------------------------------ ------------------ ----------
       101 ccc                  11-SEP-13              1
       101 bbb                  10-SEP-13              2
       101 aaa                  09-SEP-13              3
       102 eee                  11-SEP-13              1
       102 ddd                  08-SEP-13              2



这是查出所有值  加上条件RN=1的则为根据id去重复后的


SQL> SELECT ID,NAME,DATE1 FROM (SELECT ID,NAME,DATE1,ROW_NUMBER() OVER(partition by ID order by DATE1 desc) as RN FROM T1)T WHERE T.RN=1;

        ID NAME                           DATE1
---------- ------------------------------ ------------------
       101 ccc                                  11-SEP-13
       102 eee                                  11-SEP-13










这是根据查出所有值  加上条件RN=1的则为根据id去重复后的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值