表 A 销售记录        ID     客户名称          销售金额
1 张三       2
2 张三       2
3 张三       2
4 李四       5
5 李四       6
6 王五       7表 B 收款记录
        ID     客户名称          收款金额
1 张三       6
2 张三       4
3 李四       2
4 李四       5为什么 下面的语句得出来的结果不对的?
SELECT a.客户名称, SUM(a.销售金额) AS 销售金额, SUM(b.收款金额) AS 收款金额
FROM 销售记录 a LEFT OUTER JOIN
      收款记录 b ON a.客户名称 = b.客户名称
GROUP BY a.客户名称结果是
       客户名字        销售金额   收款金额
李四       22 14
王五       7
张三       12 30明显不对的.

解决方案 »

  1.   

    SELECT *
    FROM 销售记录 a LEFT OUTER JOIN
          收款记录 b ON a.客户名称 = b.客户名称
    看看这个结果,你就明白为什么了
      

  2.   

    SELECT a.客户名称, SUM(a.销售金额) AS 销售金额, 
    Sum(select 收款金额 from 收款记录 B  where 客户名称 = a.客户名称)
    FROM 销售记录 a GROUP BY a.客户名称
    换这个试试
      

  3.   

    SELECT a.客户名称, SUM(a.销售金额) AS 销售金额, 
    (select  Sum(收款金额)  from 收款记录 B  where 客户名称 = a.客户名称)
    FROM 销售记录 a GROUP BY a.客户名称
    再改一下
      

  4.   

    之所以不对是因为在a和b表中客户名称都不是关键字,你却用它来左联接了,这样肯定就相当于是笛卡尔积了,所以才会金额不对。正确的做法也对a和b表中分组求和再关联。