--借楼上数据一用
declare @s varchar(max)
set @s=''
select @s=@s+',['+月份+']' from (select distinct 月份 from t) t
set @s=stuff(@s,1,1,'')
exec('
select * from t
pivot
(sum(现金)
for 月份 in ('+@s+')
)as pt ')
create table test(
月份 varchar(20),
现金 decimal(9,2)
)
insert test
select '200501',100.5
union all select '200502',200.1
union all select '200503',3000
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',sum(case when 月份='''+月份+''' then 现金 else 0 end ) [' +月份+']'
from test order by 月份
set @sql='select '+stuff(@sql,1,1,'') + ' from test '
print @sql
exec(@sql)
insert into tb(月份,现金) values('200501',100.5)
insert into tb(月份,现金) values('200502',200.1)
insert into tb(月份,现金) values('200503',3000)
select max(t200501) as '200501',max(t200502) as '200502',max(t200503) as '200503' from
(
select
case when 月份='200501' then 现金 else 0 end as 't200501',
case when 月份='200502' then 现金 else 0 end as 't200502',
case when 月份='200503' then 现金 else 0 end as 't200503'
from tb
) t
Create Table TEST
(月份 Varchar(6),
现金 Numeric(10, 1))
Insert TEST Select '200501', 100.5
Union All Select '200502', 200.1
Union All Select '200503', 3000
GO
Declare @S Nvarchar(4000)
Select @S = ''
Select @S = @S + N', SUM(Case 月份 When ''' + 月份 + N''' Then 现金 Else 0 End) As ['+ 月份 + ']'
From TEST Group By 月份 Order By 月份
Select @S = 'Select' + Stuff(@S, 1, 1, '') + ' From TEST'
EXEC(@S)
GO
Drop Table TEST
--Result
/*
200501 200502 200503
100.5 200.1 3000.0
*/
create table t(月份 varchar(8),现金 numeric(8,2))
insert into t select '200501',100.5
insert into t select '200502',200.1
insert into t select '200503',3000
go
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',['+月份+']=sum(case 月份 when '''+月份+''' then 现金 else 0 end)' from t group by 月份
select
case when 月份='200501' then 现金 else 0 end as '200501',
case when 月份='200502' then 现金 else 0 end as '200502',
case when 月份='200503' then 现金 else 0 end as '200503'
........
from tb