SQL行转列
经典实例
创建表格
go
createtabletb(姓名varchar(10),课程varchar(10),分数int)
insertintotbvalues('张三','语文',74)
insertintotbvalues('张三','数学',83)
insertintotbvalues('张三','物理',93)
insertintotbvalues('李四','语文',74)
insertintotbvalues('李四','数学',84)
insertintotbvalues('李四','物理',94)
go
select*fromtb
go
SQL行转列
经典实例
创建表格
go
createtabletb(姓名varchar(10),课程varchar(10),分数int)
insertintotbvalues('张三','语文',74)
insertintotbvalues('张三','数学',83)
insertintotbvalues('张三','物理',93)
insertintotbvalues('李四','语文',74)
insertintotbvalues('李四','数学',84)
insertintotbvalues('李四','物理',94)
go
select*fromtb
go
姓名 | 课程 | 分数 |
---|---|---|
张三 | 语文 | 74 |
张三 | 数学 | 83 |
张三 | 物理 | 93 |
李四 | 语文 | 74 |
李四 | 数学 | 84 |
李四 | 物理 | 94 |
行转列
select 姓名,
max(case 课程 when '语文' then 分数 else 0 end) 语文, --进行转换
max(case 课程 when '数学' then 分数 else 0 end) 数学,
max(case 课程 when '物理' then 分数 else 0 end) 物理
from tb
group by 姓名;
结果
姓名 | 语文 | 数学 | 物理 |
---|---|---|---|
张三 | 74 | 83 | 93 |
李四 | 74 | 84 | 94 |
<a href='http://www.cnblogs.com/zhangzt/archive/2010/07/29/1787825.html'>参考链接</a>
网友评论