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这个关键字用来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值
以上两个结果是一样的,结果如下:

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号