请问sql语句怎么写

forgetbefore 2012-09-28 02:55:14

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

查询结果:
id r1 r2
1 b a
2 a b
3 d c
4 c d

请问怎么把交叉重复的 去掉,比如1和2重复 要去掉一条,3和4重复 要去掉一条,
求高手。
...全文
178 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tobarman 2012-09-28
  • 打赏
  • 举报
回复

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
fw0124 2012-09-28
  • 打赏
  • 举报
回复
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;

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧