首页 > 数据库 > mysql教程 > SQL Server 行与列之间转换

SQL Server 行与列之间转换

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-07 15:08:35
原创
1155 人浏览过

SQL Server把行转列: 如以下表: 当表中只有少量数据时,可以采用静态SQL语句 如: select stuName , max(case Course when '语文' then score else 0 end) as 语文, max(case Course when '数学' then score else 0 end) as 数学, max(case Course when '

    SQL Server把行转列:

如以下表:

当表中只有少量数据时,可以采用静态SQL语句

如:

select stuName ,
max(case  Course when '语文' then score else 0 end) as 语文,
max(case  Course when '数学' then score else 0 end) as 数学,
max(case  Course when '英语' then score else 0 end) as 英语,
max(case  Course when '物理' then score else 0 end) as 物理,
sum(score) as '总分'
from Student group by stuName

 

当数据表中有大量数据,就必须采用动态SQL语句了

如下操作:

declare @name varchar(8000) --声明变量
set @name = 'select stuName '
select @name = @name + ' , sum(case Course when ''' + Course + ''' then score else 0 end) [' + Course + ']'
from (select distinct Course from Student) as a
set @name = @name + ' from Student group by stuName'
exec(@name)

 

其中distinct这个关键字用来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值

以上两个结果是一样的,结果如下:

 

 

 

 

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
php - prepare与sql的开销?
来自于 1970-01-01 08:00:00
0
0
0
sql文件
来自于 1970-01-01 08:00:00
0
0
0
打印sql语句
来自于 1970-01-01 08:00:00
0
0
0
sql优化or
来自于 1970-01-01 08:00:00
0
0
0
mysql - sql报错原因?
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板