类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
如下图表记录:
张三 语文 39
张三 数学 99
张三 英语 88
李三 语文 69
李三 数学 77
李三 英语 88
变成下面的:
语文 数学 英语
张三 39 99 88
李三 69 77 88
急,在线等,谢谢
网友回答:
declare @sql varchar(8000)
set @sql=select 姓名,
select @sql=@sql+sum(case fields when +fields + then fields else 0 end) as +fields +,from (select distinct fields from 表) as a
select @sql=@sql+" group by 姓名"
exec(@sql)
参考:
有一個表T2,它的內容如下
P1 MOUNT
a1 30
a1 40
a1 50
a1 60
如何用SQL把它變成下面的結果:
a1 30 40 50 60
--*/
declare @s varchar(8000)
set @s=
select @s=@s+,+cast(MOUNT as varchar) from t2
exec(select a1+@s)
select 姓名,语文=sum(case when 科目=语文 then 分数 else 0 end),
数学=sum(case when 科目=数学 then 分数 else 0 end),
英语=sum(case when 科目=英语 then 分数 else 0 end)
from 表名 group by 姓名
--补充上面:我的测试用表是这个:
create table tn(姓名 varchar(20),科目 varchar(20),分数 int)
--如果你的科目很多,那就得用动态SQL语句来执行,
declare @sql varchar(8000)
set @sql=
select @sql=@sql+,sum(case when 科目=+科目+ then 分数 else 0 end) as [+科目+]
from tn
group by 科目
exec(select 姓名+@sql+ from tn group by 姓名)
*/
--建立表格
create table chengji
(name varchar(15) null,
kemu varchar(15) null,
marks int null)
--测试数据
insert into chengji values
(张三,语文,39)
insert into chengji values
(张三,数学,99)
insert into chengji values
(张三,英语,88)
insert into chengji values
(李三,语文,69)
insert into chengji values
(李三,数学,72)
insert into chengji values
(李三,英语,23)
--生成科目数据字典,因为不知道到底有多少科目
select distinct kemu into #temp from chengji
--根据数据字典生成动态SQL
declare @sql varchar(8000)
set @sql=select name,
select @sql=@sql+ + kemu + = + sum(case kemu when +kemu + then marks else 0 end),
from #temp
--处理@sql字符串
select @sql=substring(@sql,1,len(@sql) - 1)+from chengji group by name
--执行
exec(@sql)
/*结果
---------------------------
name 数学 英语 语文
李三 72 23 69
张三 99 88 39
*/