原帖地址:http://blog.youkuaiyun.com/kong2005/archive/2010/06/24/5692023.aspx
演示如下:
1.建表:
create table tb
(
Name varchar(10) ,
Subject varchar(10) ,
Result int
)
2.插入数据:
insert into tb(Name , Subject , Result) values('张三' , '语文' , 74)
insert into tb(Name , Subject , Result) values('张三' , '数学' , 83)
insert into tb(Name , Subject , Result) values('张三' , '物理' , 93)
insert into tb(Name , Subject , Result) values('李四' , '语文' , 74)
insert into tb(Name , Subject , Result) values('李四' , '数学' , 84)
insert into tb(Name , Subject , Result) values('李四' , '物理' , 94)
3.纵表转横表,静态方式:
select name 姓名,
max(case subject when '语文' then result else 0 end) 语文,
max(case subject when '数学' then result else 0 end) 数学,
max(case subject when '物理' then result else 0 end) 物理
from tb
group by name
3.纵表转横表,动态方式:
declare @sql varchar(8000)
set @sql = 'select Name as ' + '姓名'
select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then Result else null end) [' + Subject + ']'
from (select distinct Subject from tb) as a
print(@sql)
set @sql = @sql + ' from tb group by name'
exec(@sql)
--print(@sql)
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/kong2005/archive/2010/06/24/5692023.aspx
本文介绍了一种将纵向数据表转换为横向数据表的方法,包括静态和动态两种方式。通过案例演示了如何使用SQL语句实现这一转换过程。
2754

被折叠的 条评论
为什么被折叠?



