多表数据联合统计

现在有两张表

表1:
姓名
数量
产品
表2:
产品

要求按产品统计处 不同姓名和产品 所对应的是数量总和

例子:
表1
姓名 数量 产品

张三 30 铅笔
张三 10 毛笔
李四 10 圆珠笔
张三 20 铅笔

表2
产品

铅笔
毛笔
圆珠笔
钢笔

要求查询结果:
姓名 铅笔 毛笔 圆珠笔 钢笔
张三 50 10 0 0
李四 0 0 10 0

求SQL语句实现(注表2内容可扩展)

[b]问题补充:[/b]
hello112520 你的语句不符合我要求的结果 而且product这个字段的值需要根据 表2的product来决定 不能写死的。

而且 根据你的语句结果是
姓名 铅笔 毛笔 圆珠笔 钢笔
张三 30 10 0 0
李四 0 0 10 0

而正确的应该是
姓名 铅笔 毛笔 圆珠笔 钢笔
张三 50 10 0 0
李四 0 0 10 0

我做了个例子看是不是你想要的结果!
create table demo(
name varchar2(10),
num number,
product varchar2(10)
)

select name 姓名,max(decode(product,'铅笔',num,0)) 铅笔 ,max(decode(product,'毛笔',num,0)) 毛笔
,max(decode(product,'圆珠笔',num,0)) 圆珠笔,max(decode(product,'钢笔',num,0)) 钢笔 from demo group by name

问题好复杂啊~,楼上的回答已经很不错了,居然还不能满足,只好给出这个了

declare @sqlText nvarchar(2000)

select @sqlText='select 表1.姓名,'
select @sqlText=@sqltext+'sum((CASE 表1.产品 WHEN '''+a.产品+''' THEN 数量 ELSE 0 END)) AS ''' +a.产品+
''',' from (select distinct 产品 from 表2) as a
select @sqlText=left(@sqlText,Len(@sqlText)-1)+' from 表1 group by 姓名 '
print @sqltext
exec(@sqltext)
go

再不行,也没辙了。