首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

简单行转列,怎么转换

2012-03-15 
简单行转列,如何转换?表1danhaonameshuliang11aa1022bb1533cc20..如何对上表进行行转列?表1 name有很多行,

简单行转列,如何转换?
表1
danhao name shuliang
11 aa 10
22 bb 15
33 cc 20
.
.  

如何对上表进行行转列?表1 name有很多行,如何统计成下表,如何写?
danhao aa bb cc ..
11 10 0 0 ..
22 0 15 0
33 0 0 20 ..
.
.

[解决办法]
/*
表1
danhao name shuliang
11 aa 10
22 bb 15
33 cc 20
.
.

如何对上表进行行转列?表1 name有很多行,如何统计成下表,如何写?
danhao aa bb cc ..
11 10 0 0 ..
22 0 15 0
33 0 0 20 ..
*/
go
if OBJECT_ID('tbl')is not null
drop table tbl
go
create table tbl(
danhao varchar(2),
name varchar(2),
shuliang int
)
go
insert tbl
select '11','aa',10 union all
select '22','bb',15 union all
select '33','cc',20


declare @str varchar(1000)
set @str=''
select @str=@str+','+name+
'=max(case when name='+QUOTENAME(name,'''')+' then shuliang else 0 end)'
from tbl
group by name
print @str
set @str='select danhao '+@str+' from tbl group by danhao'
print @str
exec(@str)
/*
danhaoaabbcc
111000
220150
330020
*/

热点排行
Bad Request.