表A
姓名 性别
张三 男
李四 男
王五 男
表B
姓名 日期 数量
张三 2006-12-01 1
王五 2006-12-02 2
张三 2006-12-03 3
要求结果
姓名 性别 数量
张三 男 4
李四 男 0(要求0或者空)
王五 男 2表B没有李四select A.姓名,A.性别,SUM(B.数量) from A,B WHERE A.姓名=B.姓名 GROUP BY A.姓名,A.性别
这样结果没有李四的

解决方案 »

  1.   

    select A.姓名,A.性别,SUM(B.数量) 
    from A left join B on A.姓名=B.姓名 
    GROUP BY A.姓名,A.性别
      

  2.   

    declare @A table(nam nvarchar(10),sex nvarchar(1))
    insert into @A
    select N'张三',N'男'
    union all
    select N'李四','男'
    union all
    select N'王五',N'男'
    select * from @A
    declare @B table(nam nvarchar(10),Dat smalldatetime,Qty int)
    insert into @B
    select N'张三','2006-12-01',1
    union all
    select N'王五','2006-12-02',2
    union all
    select N'张三','2006-12-03',3
    select * from @Bselect a.nam as '姓名',a.sex as '性别',Isnull(sum(b.qty),0) as '数量'
    from @A a
    left join
    @B b
    on a.nam=b.nam
    group by a.nam,a.sex
    order by 1 desc
    --运行结果:
    姓名 性别 数量
    ----------------------------
    张三 男 4
    李四 男 0
    王五 男 2
      

  3.   

    declare @A table(nam nvarchar(10),sex nvarchar(1))
    insert into @A
    select N'张三',N'男'
    union all
    select N'李四','男'
    union all
    select N'王五',N'男'
    select * from @A
    declare @B table(nam nvarchar(10),Dat smalldatetime,Qty int)
    insert into @B
    select N'张三','2006-12-01',1
    union all
    select N'王五','2006-12-02',2
    union all
    select N'张三','2006-12-03',3
    select * from @B
    select *,isnull((select sum(qty) from @B as b where b.nam=a.nam),0) as Qty from @A as a--运行结果:/*
    --姓名 性别 数量
    ----------------------------
    /*
    张三 男 4
    李四 男 0
    王五 男 2
    */
      

  4.   

    谢谢~~~
     LEFT OUTER JOIN