合并三张表的问题!

wuhun 2004-11-19 04:27:50
A表:
编号 价格
a1 8.00
a2 2.00
a1 5.00
a1 7.00

B表:
编号 价格
a1 0.00


C表:
编号 价格
a1 5.00


三张表合并成一个视图:
D表:
编号 A表价格合计 B表价格合计 C表价格合计
a1 20.00 0.00 5.00
a2 2.00 0.00 0.00

我合并后发现如果B表和C表中如果没有a2这个编号的产品那么D表就不会出现a2这条记录。例如:
编号 A表价格合计 B表价格合计 C表价格合计
a1 20.00 0.00 5.00

请问各位大侠们,要怎么样处理呢?


...全文
97 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuhun 2004-11-19
  • 打赏
  • 举报
回复
合计出来的数值老是不正确啊。不知道是怎么回事。
lsxaa 2004-11-19
  • 打赏
  • 举报
回复
或者
Select COALESCE(a.编号,b.编号) as 编号,
A表价格合计=sum(isnull(a.价格,0)),
B表价格合计=IsNULL(sum(b.价格),0)
from a Full Join b on a.编号=b.编号
group by COALESCE(a.编号,b.编号)
wuhun 2004-11-19
  • 打赏
  • 举报
回复
如果C表中的价格不用合计呢?
lsxaa 2004-11-19
  • 打赏
  • 举报
回复
或者
Select COALESCE(a.编号,b.编号,c.编号) as 编号,
A表价格合计=sum(isnull(a.价格,0)),
B表价格合计=IsNULL(sum(b.价格),0),
C表价格合计=IsNULL(sum(c.价格),0)
from a Full Join b on a.编号=b.编号
Full Join c on a.编号=c.编号
group by isnull(a.编号,b.编号,c.编号)
davorsuker39 2004-11-19
  • 打赏
  • 举报
回复
Select a.编号,
A表价格合计=sum(isnull(a.价格,0)),
B表价格合计=IsNULL(sum(b.价格),0),
C表价格合计=IsNULL(sum(c.价格),0)
from tableA as a
Left Join tableB as b on a.编号=b.编号
Left Join tableC as c on a.编号=c.编号
group by a.编号
lsxaa 2004-11-19
  • 打赏
  • 举报
回复
Select isnull(isnull(a.编号,b.编号),c.编号) as 编号,
A表价格合计=sum(isnull(a.价格,0)),
B表价格合计=IsNULL(sum(b.价格),0),
C表价格合计=IsNULL(sum(c.价格),0)
from a Full Join b on a.编号=b.编号
Full Join c on a.编号=c.编号
group by isnull(a.编号,b.编号,c.编号)
qizhanfeng 2004-11-19
  • 打赏
  • 举报
回复
Select a.编号,
A表价格合计=sum(a.价格),
B表价格合计=IsNULL(sum(b.价格),0),
C表价格合计=IsNULL(sum(c.价格),0)
from tableA as a
Left Join tableB as b on a.编号=b.编号
Left Join tableC as c on a.编号=c.编号
group by a.编号


这个应该行了
wuhun 2004-11-19
  • 打赏
  • 举报
回复
isnull(a.编号,b.编号,c.编号)这一句错误。
lsxaa 2004-11-19
  • 打赏
  • 举报
回复
Select isnull(a.编号,b.编号,c.编号) as 编号,
A表价格合计=sum(isnull(a.价格,0)),
B表价格合计=IsNULL(sum(b.价格),0),
C表价格合计=IsNULL(sum(c.价格),0)
from a Full Join b on a.编号=b.编号
Full Join c on a.编号=c.编号
group by isnull(a.编号,b.编号,c.编号)
netmin 2004-11-19
  • 打赏
  • 举报
回复
前提是 B ,C 的编号都包含在A中
WangZWang 2004-11-19
  • 打赏
  • 举报
回复
Select a.编号,
A表价格合计=sum(a.价格),
B表价格合计=IsNULL(sum(b.价格),0),
C表价格合计=IsNULL(sum(c.价格),0)
from tableA as a
Left Join tableB as b on a.编号=b.编号
Left Join tableC as c on a.编号=c.编号
group by a.编号

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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