请问一个全链接的有关问题,如果右表有多行与左表id相同,怎么将左表重复的行显示为空
请教一个全链接的问题,如果右表有多行与左表id相同,如何将左表重复的行显示为空
请教一个全链接的问题,如果右表有多行与左表id相同,如何将左表重复的行显示为空?
例如下面:
a1表的数据
id vdef2 vdef3
a 1 1
a 1 2
a 2 1
a 2 2
a 2 3
b 1 1
a2表的数据
id vdef5 vdef6
a 1 1
a 1 2
a 1 3
a 1 4
a 2 1
a 2 2
b 1 1
b 1 2
想要实现的效果如下:
试着用全链接来写,但是有很多重复的行,想要将重复的行显示为空,如何处理?
最后这样实现的效果左表和右表都会出现重复的数据,不需要重复的数据,想要重复的数据显示为空,如何处理?
------解决思路----------------------
------解决思路----------------------
------解决思路----------------------
正解
请教一个全链接的问题,如果右表有多行与左表id相同,如何将左表重复的行显示为空?
例如下面:
a1表的数据
id vdef2 vdef3
a 1 1
a 1 2
a 2 1
a 2 2
a 2 3
b 1 1
a2表的数据
id vdef5 vdef6
a 1 1
a 1 2
a 1 3
a 1 4
a 2 1
a 2 2
b 1 1
b 1 2
想要实现的效果如下:
试着用全链接来写,但是有很多重复的行,想要将重复的行显示为空,如何处理?
insert into a1 values('a','1','1');
insert into a1 values('a','1','2');
insert into a1 values('a','2','1');
insert into a1 values('a','2','2');
insert into a1 values('a','2','3');
insert into a1 values('b','1','1');
insert into a2 values('a','1','1');
insert into a2 values('a','1','2');
insert into a2 values('a','1','3');
insert into a2 values('a','1','4');
insert into a2 values('a','2','1');
insert into a2 values('a','2','2');
insert into a2 values('b','1','1');
insert into a2 values('b','1','2');
select a1.id, a1.vdef2, a1.vdef3, a2.id, a2.vdef5, a2.vdef6
from a1
full outer join a2 on a1.id = a2.id
and a1.vdef2 = a2.vdef5
order by a1.id, a1.vdef2, a1.vdef3
最后这样实现的效果左表和右表都会出现重复的数据,不需要重复的数据,想要重复的数据显示为空,如何处理?
------解决思路----------------------
select NVL(T1.id,T2.id) id,T1.vdef2,T1.vdef3, T2.vdef5, T2.vdef6
from(
select id,vdef2,vdef3,row_number()over(partition by id,vdef2 order by vdef3) rn
from a1) T1 full outer join (
select id,vdef5,vdef6,row_number()over(partition by id,vdef5 order by vdef6) rn
from a2) T2
on T1.id = T2.id
and T1.vdef2 = T2.vdef5
AND T1.RN=T2.RN
order by NVL(T1.id,T2.id),NVL(T1.vdef2,T2.vdef5),NVL(T1.rn,T2.rn)
------解决思路----------------------
select nvl(a1.id,a2.id), a1.vdef2, a1.vdef3, a2.vdef5, a2.vdef6
from a1
full outer join a2
on a1.id = a2.id
and a1.vdef2 = a2.vdef5
and a1.vdef3 = a2.vdef6
order by nvl(a1.id,a2.id), a1.vdef2, a1.vdef3
------解决思路----------------------
正解