--建立测试环境
Create Table 表(name varchar(10),month varchar(10),salary varchar(10))
--插入数据
insert into 表
select '张三','1月份','1000圆' union
select '张三','2月份','3000圆' union
select '张三','3月份','56000圆' union
select '里斯','1月份',null union
select '里斯','2月份','6000圆' union
select '里斯','3月份','9000圆' union
select '王旺','1月份','45500圆' union
select '王旺','2月份','450圆' union
select '王旺','3月份','450圆'
--select * from 表
--测试语句
DECLARE @SQL VARCHAR(8000)
SET @SQL='SELECT name'
SELECT @SQL= @SQL+
',max(CASE WHEN month = ''' + month + ''' THEN isnull(salary,'''') END) [' + month + ']'
FROM (SELECT DISTINCT month FROM 表) A
SET @SQL=@SQL+' FROM 表 GROUP BY name'
exec (@SQL)
select name, sum(1月份工资) as 1月份工资, sum(2月份工资) as 2月份工资, SUM(3月份工资) as 1月份工资
from (
select name, 1月份工资=case when 月份='1月份' then 工资 else 0 end,
2月份工资=case when 月份='2月份' then 工资 else 0 end,
3月份工资=case when 月份='3月份' then 工资 else 0 end
from table) a
group by name