Heim >Datenbank >MySQL-Tutorial >SQL Server 行与列之间转换

SQL Server 行与列之间转换

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 15:08:351151Durchsuche

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

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

 

 

 

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn