sql 行专列 列转行 普通行列转换
来源:互联网 发布:mackeeper mac破解版 编辑:程序博客网 时间:2024/04/30 11:39
主要应用case语句来解决行转列的问题
行转列问题主要分为两类
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
- sql 行专列 列转行 普通行列转换
- sql 行专列 列转行 普通行列转换
- sql 行专列 列转行 普通行列转换
- SQL 列转行问题。普通行列转换。
- hive 行专列 列转行
- hive行专列,列转行
- 列转行-行列转换
- 行列转换(列转行)
- SQL中PIVOT 行列转换;UNPIVOT列转行
- sql 普通行列转换
- SQL普通行列转换
- SQL Server 2005之PIVOT/UNPIVOT行列转换(行转列、列转行)
- oracle中的行列转换(一 列转行 pivot)
- Ms SQL中 普通行列转换
- 【SQL精彩语句】普通行列转换
- 【SQL精彩语句】普通行列转换(完整版)
- SQL普通行列转换 (纵表转横表 )
- sql server 2000数据库普通行列转换
- Using Eclipse to compile Android source code
- 转:MySQL 备份和恢复
- 记录窗口的位置和大小
- Bring your Android device up
- 如何设置应用程序窗口的初始大小和位置
- sql 行专列 列转行 普通行列转换
- SQL中Case的使用方法
- shell操作mysql
- Loadrunner实现AIX系统网络流量和内存监控
- C#中操作XML文件(读写改删全接触)
- 11月18日 健康情况
- ren
- Trixbox上安装sangoma pri数字卡视频教程
- 快速排序