现在3个表
表a:
class yyyy numA
A 2005 10
B 2005 20
表b:
class yyyy numB
A 2005 30
C 2005 40
表c:
class yyyy numC
A 2005 50
B 2006 60
我需要的查询结果是
class yyyy numA numB numC
A 2005 10 30 50
B 2005 20
C 2005 40
B 2006 60
谢谢路过大虾指点~
...全文
1306打赏收藏
续上次提出的菜问题后,再提一个菜问题,关于full join的
现在3个表 表a: class yyyy numA A 2005 10 B 2005 20 表b: class yyyy numB A 2005 30 C 2005 40 表c: class yyyy numC A 2005 50 B 2006 60 我需要的查询结果是 class yyyy numA numB numC A 2005 10 30 50 B 2005 20 C 2005 40 B 2006 60 谢谢路过大虾指点~
select class,yyyy,sum(numA),sum(numB),sum(numC) from
(select class,yyyy,numA,null numB,null numC from A
union all
select class,yyyy,null numA,numB,null numC from B
union all
select class,yyyy,null numA,null numB,numC from C
)
group by class,yyyy
select class,yyyy,numA,null numB,null numC from A
union all
select class,yyyy,null numA,numB,null numC from A
union all
select class,yyyy,null numA,null numB,numC from A
我的做法是
select nvl(t.yyyy, c.yyyy),
nvl(t.class, c.class),
t.numA,
t.numB,
c.numC
from
(select nvl(a.yyyy,b.yyyy) yyyy,
nvl(a.class,b.class) class,
a.numA,
b.numB
from a full join b on (a.yyyy=b.yyyy and a.class = b.class)) t full join c on (t.yyyy = c.yyyy and t.class = c.class)