行变列
来源:互联网 发布:云计算行业分析报告 编辑:程序博客网 时间:2024/04/27 21:08
create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
insert into tb values('张三' , '语文' , 74)
insert into tb values('张三' , '数学' , 83)
insert into tb values('张三' , '物理' , 93)
insert into tb values('李四' , '语文' , 74)
insert into tb values('李四' , '数学' , 84)
insert into tb values('李四' , '物理' , 94)
go
select * from tb
go
select 姓名 as 姓名 ,
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 姓名
go
max() 这里只是耍赖而已
但这次我要的不是着种结果,如果不知道有多少科目,科目是东太的怎么办?
--动态的写法
declare @sql varchar(8000)
select @sql = isnull(@sql + ',' , '') + 课程 from tb group by 课程
select @Sql
exec ('select m.* , n.平均分 , n.总分 from
(select * from (select * from tb) a pivot (max(分数) for 课程 in (' + @sql + ')) b) m ,
(select 姓名 , cast(avg(分数*1.0) as decimal(18,2)) 平均分 , sum(分数) 总分 from tb group by 姓名) n
where m.姓名 = n.姓名')
go
- 行变列
- 行变列
- 行变列
- sql行变列
- 简单行变列
- sql行变列
- 表格行变列
- mysql 行变列
- mysql行变列
- oracle 行变列函数
- 行变列 交叉查询
- 行变列,交叉查询
- 行变列 交叉查询
- 把行变列的sql
- MySQL 行变列 查询
- oracle 行变列问题
- SQL 动态行变列转换
- 通用sql行变列
- java从入门到ssh视频
- Mac OS X: 安全警告,病毒就在你身边
- JQuery UI 1.8 新增定位、按钮、自动补全、新的微巨工厂、轻量级内核
- 图标操作
- 私网地址段
- 行变列
- 如何使用ui文件
- ATL 字符串转换宏
- SQLITE和多线程
- Maven 笔记(1)
- Eclipse上的Tomcat插件安装和调试
- Light Mapping - Theory and Implementation
- [如何做Inventor插件和做插件的安装程序]网络培训
- 想法