sql查询每个人最新的2个电话号码

表A中有客户电话号码信息与更新时间,如何查出客户最近更新的2个电话号码,如果客户只有一个电话号码,则号码1与号码2相同

A:

IDMOBILEUPDATE_DTUPDATE_TM
11112018010111:11:11
22222018020212:12:12
33332018030313:13:13
14442018040414:14:14
35552018050515:15:15
16662018060616:16:16

 结果:

IDMOBILE1MOBILE2
1666444
2222222
3555333

 

select
    id
    ,mobile1
    ,coalesce(m2,m1) mobile2
from (
    select
        id
        ,max(case mobile_rank when '1' then mobile else '0' end) m1
        ,max(case mobile_rank when '2' then mobile else '0' end) m2
    from (
        select
            id
            ,mobile
            ,row_number() over(partition by id order by update_dt desc,update_tm desc) mobile_rank
        from A 
          ) b--查询出每个ID下的电话号码按更新时间倒排的序号,可能会有同一ID同一时间更新2个电话号码
   group by 1--每个ID取出排序最靠前的2个电话号码
   ) c

  

转载于:https://www.cnblogs.com/king-cobra-rko/p/11167178.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值