OVER(PARTITION BY INQUIRY_ID, SID, PPID, TYPE ORDER BY EMAIL_ID DESC)

1)table AA strucure:

inquiry_id , email_id ,  sid  ,  ppid  ,type


2)

select inquiry_id,sid,ppid,type 
from AA
group by inquiry_id,sid,ppid,type having count(1) =2
order by inquiry_id,sid,ppid


inquiry_id        sid              ppid      type count

8000013444326 6008824985041 1008186222 S    2
8000013444326 6008824985041 1008276447 S    2
8000013444378 6008802481609 1005683880 S    2
8000013444400 6008824780848 1003518478 S    2
8000013444400 6008824780848 1003518819 S    2


上面的结果是select 出来的,也就是每行记录有在AA中有两条纪录。但是有不一样的email_id

3)to do :

现在要把上面的每两条记录的email_id 大的那条纪录的type值变成"P"。

解答:

SELECT INQUIRY_ID, SID, PPID, DECODE(RN, 1, 'P', TYPE) TYPESS, COUNTS
FROM (SELECT AA.*,
ROW_NUMBER()
OVER(PARTITION BY INQUIRY_ID, SID, PPID, TYPE ORDER BY EMAIL_ID DESC) RN,
COUNT(1) OVER(PARTITION BY INQUIRY_ID, SID, PPID, TYPE) COUNTS
FROM AA) A
WHERE COUNTS > 1;




update INQUIRE_ALL_DETAIL_CURRENT
set email_type ='P' where email_id in
(
select distinct(email_id)
FROM (SELECT INQUIRE_ALL_DETAIL_CURRENT.*,ROW_NUMBER() OVER(PARTITION BY INQUIRY_ID, supplier_id,product_id, email_type ORDER BY EMAIL_ID DESC) RN,
COUNT(1) OVER(PARTITION BY INQUIRY_ID, supplier_id,product_id, email_type) COUNTS
FROM INQUIRE_ALL_DETAIL_CURRENT) A
WHERE COUNTS > 1 and rn=1
)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值