当前位置: 代码迷 >> Sql Server >> 求SQL。解决办法
  详细解决方案

求SQL。解决办法

热度:80   发布时间:2016-04-27 16:53:06.0
求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 @[email protected]+quotename(品名)+ '=sum(case when 品名= ' ' '+品名+ ' ' ' then [数量] end), ' from T
group by 品名
select @sql=left(@sql, len(@sql)-1), @[email protected]+ ' 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 @[email protected]+quotename(品名)+ '=isnull(sum(case when 品名= ' ' '+品名+ ' ' ' then [数量] end),0), ' from table1
group by 品名
select @[email protected]+ 'sum(数量) 总件数 from table1 group by 销售员 order by 销售员 desc '
print @sql
exec(@sql)
------解决方案--------------------
  相关解决方案