17,382
社区成员




with t as
(
select 1 id,'a' r1,'b' r2 from dual
union all
select 2 id,'b' r1,'a' r2 from dual
union all
select 3 id,'c' r1,'d' r2 from dual
union all
select 4 id,'d' r1,'c' r2 from dual
)
select t.id,t.r1,t.r2 FROM t
with t as
(
select 1 id,'a' r1,'b' r2 from dual
union all
select 2 id,'b' r1,'a' r2 from dual
union all
select 3 id,'c' r1,'d' r2 from dual
union all
select 4 id,'d' r1,'c' r2 from dual
)
SELECT b.id,b.r1,b.r2 FROM
(
SELECT a.*, row_number() over (PARTITION BY ascii(a.r1)+ascii(a.r2)ORDER BY ID ) num
FROM t a
) b
WHERE b.num =1
with t as
(
select 1 id,'a' r1,'b' r2 from dual
union all
select 2 id,'b' r1,'a' r2 from dual
union all
select 3 id,'c' r1,'d' r2 from dual
union all
select 4 id,'d' r1,'c' r2 from dual
)
select max(id), r1, r2 from
(select id, greatest(r1,r2) r1, least(r1,r2) r2 FROM t)
group by r1,r2;