17,377
社区成员
发帖
与我相关
我的任务
分享
SQL> with table_a as
2 (
3 select '111' ID ,'a' class ,'1' new from dual
4 union
5 select '111' ID ,'b' class ,'3' new from dual
6 union
7 select '111' ID ,'c' class ,'5' new from dual
8 union
9 select '222' ID ,'a' class ,'1' new from dual
10 union
11 select '222' ID ,'b' class ,'2' new from dual
12 union
13 select '222' ID ,'c' class ,'3' new from dual
14 union
15 select '222' ID ,'d' class ,'5' new from dual
16 )
17 SELECT t1.ID,
18 t1.CLASS,
19 t2.NEW
20 FROM (SELECT t.*,
21 row_number() OVER(PARTITION BY t.ID ORDER BY t.NEW) cnt
22 FROM table_a t) t1
23 INNER JOIN (SELECT t.ID,
24 t.NEW,
25 row_number() OVER(PARTITION BY t.ID ORDER BY t.NEW DESC) cnt
26 FROM table_a t) t2 ON t1.ID = t2.ID
27 AND t1.cnt = t2.cnt;
ID CL NE
------ -- --
111 a 5
111 b 3
111 c 1
222 a 5
222 b 3
222 c 2
222 d 1
with table_a as
(
select '111' ID ,'a' class ,'1' new from dual
union
select '111' ID ,'b' class ,'2' new from dual
union
select '111' ID ,'c' class ,'3' new from dual
union
select '222' ID ,'a' class ,'1' new from dual
union
select '222' ID ,'b' class ,'2' new from dual
union
select '222' ID ,'c' class ,'3' new from dual
union
select '222' ID ,'d' class ,'4' new from dual
)
select table_a.ID,table_a.class,row_number() over(partition by table_a.ID order by table_a.ID,table_a.class desc)
from table_a
order by table_a.ID,table_a.class,table_a.new desc