首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求SQL。解决办法

2012-01-21 
求SQL。。。商品销售情况表table1销售员品名数量张电视4张冰箱1王电视3李空调2王洗衣机1张空调3张电视1......

求SQL。。。
商品销售情况表
table1
销售员       品名         数量
张               电视           4
张               冰箱           1
王               电视           3
李               空调           2
王               洗衣机       1
张               空调           3
张               电视           1
.................
要得到一下表
个人销售报告表
table2
售货员       电视       冰箱       空调     洗衣机         总件数
张                   5             1           0                 0                 6
王                   3             0           0                 0                 3
李                   0             0           2                 0                 2

[解决办法]
create table T(销售员 char(7), 品名 varchar(10), 数量 int)
insert T select 'zhang ', '电视 ', 4
union all select 'zhang ', '冰箱 ', 1
union all select 'wang ', '电视 ', 3
union all select 'li ', '空调 ', 2
union all select 'wang ', '洗衣机 ', 1
union all select 'zhang ', '空调 ', 3
union all select 'zhang ', '电视 ', 1


declare @sql varchar(4000)
set @sql= 'select 销售员, '
select @sql=@sql+quotename(品名)+ '=sum(case when 品名= ' ' '+品名+ ' ' ' then [数量] end), ' from T
group by 品名
select @sql=left(@sql, len(@sql)-1), @sql=@sql+ ' from T group by 销售员 '

exec(@sql)
[解决办法]
我写完整点
create table table1(销售员 char(7), 品名 varchar(10), 数量 int)
insert table1 select '张 ', '电视 ', 4
union all select '张 ', '冰箱 ', 1
union all select '王 ', '电视 ', 3
union all select '李 ', '空调 ', 2
union all select '王 ', '洗衣机 ', 1
union all select '张 ', '空调 ', 3
union all select '张 ', '电视 ', 1

select * from table1

declare @sql varchar(4000)
set @sql= 'select 销售员, '
select @sql=@sql+quotename(品名)+ '=isnull(sum(case when 品名= ' ' '+品名+ ' ' ' then [数量] end),0), ' from table1
group by 品名
select @sql=@sql+ 'sum(数量) 总件数 from table1 group by 销售员 order by 销售员 desc '
print @sql
exec(@sql)
------解决方案--------------------


这个动态的还不行吗?
LZ试了没有?

热点排行