表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.性别
这样结果没有李四的
姓名 性别
张三 男
李四 男
王五 男
表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.性别
这样结果没有李四的
from A left join B on A.姓名=B.姓名
GROUP BY A.姓名,A.性别
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
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
*/
LEFT OUTER JOIN