create table t1(name char(1),xm char(1),sj decimal(9,2))
insert t1
select 'A','a',1.2 union all
select 'A','b',2.3 union all
select 'A','a',1.1 union all
select 'A','b',2.2 union all
select 'A','a',1.3 union all
select 'A','b',2.4
select * from t1
alter table t1 add sid int identity(1,1)
go
select [name],
a=sum(case xm when 'a' then sj end),
b=sum(case xm when 'b' then sj end)
from t1 group by name,(sid-1)/2
go
drop table t1
/*
name xm sj
---- ---- -----------
A a 1.20
A b 2.30
A a 1.10
A b 2.20
A a 1.30
A b 2.40
(所影响的行数为 6 行)
(所影响的行数为 6 行)
name a b
---- ---------------------------------------- ----
A 1.20 2.30
A 1.10 2.20
A 1.30 2.40
declare @sql varchar(8000)
set @sql = 'select name'
select @sql = @sql +',['+ xm+']=sum(case xm when '''+ xm +''' then sj else 0 end)' from 表 group by xm
set @sql = @sql +' from 表 group by name'
exec(@sql)
declare @sql varchar(8000)
set @sql = 'select name'
select @sql = @sql +',['+ xm+']=sum(case xm when '''+ xm +''' then sj else 0 end)' from 表 group by xm
set @sql = @sql +' from tblA group by name'
exec(@sql)