现有类似如下的两张表:
表A
aa bb cc
---------------
11 02 6039
22 02 7090
33 02 6039
表B
aa bb cc dd
---------------
11 02 7090 1.1
22 02 7090 2.2
44 02 6039 3.2要求实现结果如下:
aa bb cc sum(dd)
-------------------------
11 02 6039 0
22 02 7090 2.2
33 02 6039 0
即:表A中的内容要全部存在,并且aa,bb,cc字段的内容,相应的对dd字段求和。应该属于多字段的外联接语句问题,请问如何实现?我自己尝试写了
select A.aa,A.bb,A.cc,sum(B.dd)
from A,B
where A.aa=b.aa(+) and A.cc=B.cc(+)
group by A.aa,A.bb,A.cc 结果没实现。
表A
aa bb cc
---------------
11 02 6039
22 02 7090
33 02 6039
表B
aa bb cc dd
---------------
11 02 7090 1.1
22 02 7090 2.2
44 02 6039 3.2要求实现结果如下:
aa bb cc sum(dd)
-------------------------
11 02 6039 0
22 02 7090 2.2
33 02 6039 0
即:表A中的内容要全部存在,并且aa,bb,cc字段的内容,相应的对dd字段求和。应该属于多字段的外联接语句问题,请问如何实现?我自己尝试写了
select A.aa,A.bb,A.cc,sum(B.dd)
from A,B
where A.aa=b.aa(+) and A.cc=B.cc(+)
group by A.aa,A.bb,A.cc 结果没实现。
from A,B
where A.aa=b.aa(+) and A.bb=b.bb(+) and A.cc=B.cc(+)
group by A.aa,A.bb,A.cc
sum(B.dd) ==》 nvl(sum(B.dd), 0)就可以把 0 值显示出来了。
from A,B
where A.aa=b.aa(+) and A.bb=b.bb(+) and A.cc=B.cc(+)
group by A.aa,A.bb,A.cc
这样写比较合适
关于nvl()函数的使用,我也试过,不起作用。
另一处改动,照大家的意思是A表与B表的共有字段必须全部外联接吗?我实际中的表很大,有若干字段。现在关键是举例中至少类似11的记录出不来。
from A
left join B on A.aa=b.aa and A.bb=b.bb and A.cc=B.cc
group by A.aa,A.bb,A.cc