求多表合并的问题,请看图解。

alfly007 2014-04-21 12:27:16
不好说明,直接表图。烦请各位高手留步指教。


就是上面一个情况。

鄙人最开始想的是用全连接full join,但是显然全连接没法解决依上图表的关键值进行加和的操作。

如下左连接的使用,只是解决了加和,保留了左边A表的项。但是B表中独有的项没了。
select pid, bid, pno, Anum+Bnum
from (select pid, bid, pno, sum(pNum) Anum from A group by pid, bid, pno) as tab1
left join (select pid, bid, pno, sum(pNum) Bnum from B group by pid, bid, pno) as tab2
on tab1.pid=tab2.pid and tab1.bid=tab2.pid and tab1.pno=tab2.pno

结果:
<p1, b1, 38>, 10
<p2, b2, 44>, 7

...全文
128 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2014-04-21
  • 打赏
  • 举报
回复
从图上来看可以用intersect来实现
alfly007 2014-04-21
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
从图上来看可以用intersect来实现




我倒是觉得可以先左连接,然后使用union的方式,
左连接得到A独有和A交B,然后union B,即排除了B中与其相同的项,同时联合了B中独有项。就是感觉,这样老复杂了。。。。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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