行转列问题主要分为两类。
1)简单的行转列问题:
示例表:
id sid course result
1 2005001 语文 80.0
2 2005001 数学 90.0
3 2005001 英语 80.0
4 2005002 语文 56.0
5 2005002 数学 69.0
6 2005002 英语 89.0
执行:
select sid,语文=isnull(sum(case course when '语文' then result end),0),
数学=isnull(sum(case course when '数学' then result end),0),
英语=isnull(sum(case course when '英语' then result end),0)
from result
group by sid
order by sid
得出结果:
sid 语文 数学 英语
2005001 80.0 90.0 80.0
2005002 56.0 69.0 89.0
2)较为复杂的行转列
表1:course
id name
1 语文
2 数学
3 英语
表2:result
id sid course result
1 2005001 语文 80.0
2 2005001 数学 90.0
3 2005001 英语 80.0
4 2005002 语文 56.0
5 2005002 数学 69.0
6 2005002 英语 89.0
declare @sql varchar(8000)
set @sql='select sid'
select @sql=@sql+','+course.name+'=isnull(sum(case course when '''+course.name+''' then result end),0)'
from course order by id
set @sql=@sql+' from result group by sid order by sid'
print @sql
exec(@sql)
得出结果
sid 语文 数学 英语
2005001 80.0 90.0 80.0
2005002 56.0 69.0 89.0
分享到:
相关推荐
sqlserver 实现 行转列 split 分割的函数,具体使用方法写有在文件里。
sqlserver 动态行专列 避免了数据列过多的时候大量的使用case when then...... 原数据 : UserName Subject Score Nick 语文 80 Nick 数学 90 Nick 英语 70 Nick 生物 85 Kent 语文 80 Kent 数学 90 Kent ...
SqlServer如何进行行转列和列转行方法
Sql Server里面的行转列,列转行
sqlserver 行转成列 sqlserver 把行转成列 sqlserver 把行转成列
行转列sql实例行转列sql实例行转列sql实例行转列sql实例行转列sql实例
sqlserver 行数据转成列数据,#temp1为数据表,#temp2为辅助表,具体场景可微调替换。
SQL行转列参考代码(sqlserver)
列转行行转列
实现由多行转化为多列显示,适合初级学者参考学习
向大家介绍 SQL Server 中行转列问题的终极解决方案,主要应用case语句来解决行转列的问题
SQL 行转列+动态获取列名 通用的动态获取列名
sql行转列_列转行问题.
主要是关于sqlserver的多行转列的问题,这是我经过个人测试的语句。
NULL 博文链接:https://zmx.iteye.com/blog/570073
sql列转行以及行转列的通用存储过程!mssqlserver版本!
sql server 用于行转列,省得各位去找语句,select to_char(wm_concat('''' || valuelabel || '''')) name from (select distinct t.valuelabel from structuredrecruit t) select * from (select t.uhid, t....
SQL Server 将某一列的值拼接成字符串示例
sql行变列说明
SQL之行转列 SQL之行转列 SQL之行转列