lrary

时光荏苒,岁月流逝,仅以此纪念那一段走过来的开发岁月,希望哪天回首时,仍能想起一幕幕难忘的日子。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

表3的姓名中应该包括所有出现在表1和表2姓名中的记录,如果某人在表1中没出现,则相当于创收为0;同样如果某人在表2中没出现,则相当于花费为0.
再举例Table1
姓名    创收
A      2000
C       300
A       200
Table2
姓名    花费
A        400
B         20
D        200
现在想得到一个综合结果,如下
姓名    创收    花费
A      2200    400
B         0     20
C       300      0
D         0    200

select isnull(a.姓名,b.姓名) as 姓名,a.创收,b.花费
from
  ( select table1.姓名,sum(table1.创收) 创收
    from table1
    group by table1.姓名
  ) as a
full outer join
(
  select table2.姓名,sum(table2.花费) 花费
  from table2
  group by table2.姓名
) as b
on a.姓名=b.姓名

(或者第一行为)
select isnull(a.姓名,b.姓名) as 姓名,isnull(a.创收,0) as 创收,isnull(b.花费,0) as 花费
否则有些查询出来的创收或花费为 NULL ,也许你需要他们为 0.

posted on 2006-05-08 15:49  lrary  阅读(3950)  评论(1编辑  收藏  举报