create table hzl (name char(10),km char(10),cj int)
go
insert hzl values('张三','语文',80)
insert hzl values('张三','数学',86)
insert hzl values('张三','英语',75)
insert hzl values('李四','语文',78)
insert hzl values('李四','数学',85)
insert hzl values('李四','英语',78)
select * from hzl
declare @sql varchar(8000)
set @sql = 'select name'
select @sql = @sql + ',sum(case km when '''+km+''' then cj end) ['+km+']'
from (select distinct km from hzl) as a
select @sql = @sql+' from hzl group by name'
exec(@sql)drop table hzl
go
insert hzl values('张三','语文',80)
insert hzl values('张三','数学',86)
insert hzl values('张三','英语',75)
insert hzl values('李四','语文',78)
insert hzl values('李四','数学',85)
insert hzl values('李四','英语',78)
select * from hzl
declare @sql varchar(8000)
set @sql = 'select name'
select @sql = @sql + ',sum(case km when '''+km+''' then cj end) ['+km+']'
from (select distinct km from hzl) as a
select @sql = @sql+' from hzl group by name'
exec(@sql)drop table hzl
go
insert hzl values('张三','语文',80)
insert hzl values('张三','数学',86)
insert hzl values('张三','英语',75)
insert hzl values('李四','语文',78)
insert hzl values('李四','数学',85)
insert hzl values('李四','英语',78)---------------拼装sql语句实现动态查找列名
declare @sql varchar(8000),@tbName varchar(40)
set @tbName = 'hzl'--这里填你的表名
set @sql = ''
select @sql = @sql +' union select '''+name+''' 原列名, '+name+' 值 from '+@tbName
from (
select a.name from syscolumns a
join sysobjects b on a.id=b.id
and b.xtype='U' and b.name=@tbName
)a
set @sql=stuff(@sql,1,6,'')
exec(@sql)-----------删除测试
drop table hzl---------------结果
原列名 值
cj 75
cj 78
cj 80
cj 85
cj 86
km 数学
km 英语
km 语文
name 李四
name 张三
我的实现结果和小虾米是一样的,不过我的是动态取列名的.如果字段多的话...
--------------------------------
是啊,这种应该在前台处理.javascript多灵活啊.数据库中放这种没意义的东西不太好