日期:2014-05-18 浏览次数:20714 次
create table T(业务员 varchar(100), 年份 int, 月份 int, 业务量 int) insert into T select 'A',2006, 1, 80 insert into T select 'A',2006, 2, 90 insert into T select 'A',2006, 3, 82 insert into T select 'D',2007, 9, 45 select 业务员, 年份, sum(case when 月份=1 then 业务量 else null end) as [1], sum(case when 月份=2 then 业务量 else null end) as [2], sum(case when 月份=3 then 业务量 else null end) as [3], sum(case when 月份=4 then 业务量 else null end) as [4], sum(case when 月份=5 then 业务量 else null end) as [5], sum(case when 月份=6 then 业务量 else null end) as [6], sum(case when 月份=7 then 业务量 else null end) as [7], sum(case when 月份=8 then 业务量 else null end) as [8], sum(case when 月份=9 then 业务量 else null end) as [9], sum(case when 月份=10 then 业务量 else null end) as [10], sum(case when 月份=11 then 业务量 else null end) as [11], sum(case when 月份=12 then 业务量 else null end) as [12] from T group by 业务员,年份 order by 业务员,年份 drop table T
------解决方案--------------------
--借用楼上的列子 create table T(业务员 varchar(100), 年份 int, 月份 int, 业务量 int) insert into T select 'A',2006, 1, 80 insert into T select 'A',2006, 2, 90 insert into T select 'A',2006, 3, 82 insert into T select 'D',2007, 9, 45 go declare @s nvarchar(4000) set @s='select 业务员,年份' select @s=@s+','+quotename(col1)+'=count( case when 年份='+rtrim(col1)+' then 1 else 0 end)' from (select 1 as col1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 union select 10 union select 11 union select 12 )t1 exec(@s+' from t group by 业务员,年份') 业务员 年份 1 2 3 4 5 6 7 8 9 10 11 12 ---------------------------------------------------------------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- A 2006 3 3 3 3 3 3 3 3 3 3 3 3 D 2007 1 1 1 1 1 1 1 1 1 1 1 1
------解决方案--------------------
--显示记录数 select 业务员, 年份, [1]=count( case when 年份=1 then 1 else 0 end), [2]=count( case when 年份=2 then 1 else 0 end), [3]=count( case when 年份=3 then 1 else 0 end), [4]=count( case when 年份=4 then 1 else 0 end), [5]=count( case when 年份=5 then 1 else 0 end), [6]=count( case when 年份=6 then 1 else 0 end), [7]=count( case when 年份=7 then 1 else 0 end), [8]=count( case when 年份=8 then 1 else 0 end), [9]=count( case when 年份=9 then 1 else 0 end), [10]=count( case when 年份=10 then 1 else 0 end), [11]=count( case when 年份=11 then 1 else 0 end), [12]=count( case when 年份=12 then 1 else 0 end) from t group by